我的问题很容易解释,但找出最有效的方法却很困难。
我正在尝试从数组中的特定索引开始重新排序数组。
我有什么:
var array = [1,2,3,4,5];
我想要的是什么:
array = [3,4,5,1,2];
我做了什么:
var array = [1,2,3,4,5];
var arr1 = array.slice(array.indexOf(3), array.length);
var arr2 = array.slice(0, array.indexOf(3));
arr1.push(arr2);
var newArray = arr1.join(); // [3,4,5,1,2];
正如您所看到的,对于看似简单的任务,有很多事情要做。如果您对如何改进这一点有任何建议,我将不胜感激。无论是香草JS还是Underscore / Lodash都可以。
答案 0 :(得分:3)
答案 1 :(得分:1)
这不会让你最后得到一个平面阵列:
arr1.push(arr2);
var newArray = arr1.join();
您需要做的是调用方法Array.prototype.concat
var newArray = arr1.concat(arr2);
答案 2 :(得分:1)
更像功能的方法:
var reorder = function(array, index) {
return _.flatten(_.partition(array, function(v, i) {return i < index}).reverse())
};
reorder([1,2,3,4,5], 3);
或者代替_.flatten
,您可以使用_.union.apply(null, ...)
。
答案 3 :(得分:1)