有没有内置的方法来排序数组的一部分?

时间:2016-03-29 12:55:45

标签: javascript arrays sorting

我们可以简单地使用array.sort()(该数组包含字母表),但这将对整个数组进行排序。但我只是想像这样对数组的一部分进行排序:

让我们假设array = ["c" , "d" , "b" , "f" , "a" , "e"]。现在,我不想对其进行完全排序,而是将其从索引2排序到5,因此array变为["c" , "d" , "a" , "b" , "e" , "f"]

Array.prototype中是否有任何方法可以执行此操作?

注意:我可以编写一个自定义函数来解决这个问题,但我正在避免它。也许我可以快速找到解决方案......

4 个答案:

答案 0 :(得分:1)

没有可用的功能完全符合您的要求。

要实现您想要的目标,您必须执行以下操作:



var array = ["c", "d", "b", "f", "a", "e"];
var array1 = array.splice(2, 4);

array1.sort();

array = array.concat(array1);

console.log(array);




答案 1 :(得分:0)

试试这个

    var arr = ["c" , "d" , "b" , "f" , "a" , "e"];
    var tmpArr = arr.slice(2,5);
    tmpArr.sort();
    arr = arr.slice(0,2).concat(tmpArr).concat(arr.slice(5));

 document.body.innerHTML += JSON.stringify(arr,0,4);

答案 2 :(得分:0)

数组原型方法的完整列表如下:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype

我能找到的最接近的东西是使用Array.slice来获得3个数组:要排序的元素之前的元素,要排序的元素以及要排序的元素之后的元素。然后使用Array.sort对所需元素进行排序。最后用Array.concat将数组粘合在一起。

答案 3 :(得分:0)

.slice()将是不错的选择:

var arr = ["c" , "d" , "b" , "f" , "a" , "e"];
var o = arr.slice(0, 2); // take the first two out
var a = arr.slice(-4).sort(); // now slice back and sort it

var n = o.concat(a); // concat the two arrarys and return it.

document.querySelector('pre').innerHTML = JSON.stringify(n, 0, 0);
<pre></pre>