按值排序数组并放在中间

时间:2016-10-21 19:00:57

标签: javascript jquery arrays arraylist numbers

非常快的问题, 我想按特定值排序一个数组,并将它总是放在中间。 例如......如果我的数组是:

myarr = [1,2,3,4,5];

函数middlelizeArr(myarr,2)我应该返回这个数组:

 result [5,1,2,3,4]

并在偶数数组的情况下找到最佳条件

    myarr = [1,2,3,4,5,6,7,8];

result [7,8,1,2,3,4,5,6];

我怎么能这样做?有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

首先,你需要有一个数组的大小,并找到你想要放在中间的数字的位置

如果,  n =数组的大小  l =您希望将其放入中间的数字的位置

如果n / 2> l,然后顺时针移动你的号码,否则逆时针移动它。

答案 1 :(得分:0)

这是通过比较"中"的指数来完成的。数字到数组的长度,然后移动(和推动)直到它们相等。

我已通过以下方式实施:

function middlelizeArray(array, middle) {
    var goal = Math.trunc(array.length/2);

    while(array.indexOf(middle) != goal) {
        array.push(array.shift());
    }
    return array;
}

这也可以直接添加到数组原型中。这样您就可以只说myArray.middlelize(2);

这样就可以了:

Array.prototype.middlelize = function(middle) {
    var goal = Math.trunc(this.length/2);
    while(this.indexOf(middle) != goal) {
        this.push(this.shift());
    }
    return this;
}