围绕索引重新排列数组
Reorder an array around an index
我的问题解释起来很简单,但要找到最有效的方法却很困难。
我正在尝试从数组中的某个特定索引开始对数组进行重新排序。
我所拥有的:
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都可以。
一行怎么样:
var array = array.slice(2, array.length).concat(array.slice(0, 2));
演示
这不会在最后得到一个平面阵列:
arr1.push(arr2);
var newArray = arr1.join();
您需要做的是将方法称为Array.prototype.concat
var newArray = arr1.concat(arr2);
更像功能的方法:
var reorder = function(array, index) {
return _.flatten(_.partition(array, function(v, i) {return i < index}).reverse())
};
reorder([1,2,3,4,5], 3);
或者,您可以使用_.union.apply(null, ...)
来代替_.flatten
。
使用下划线的一个简单方法是使用first和rest函数并连接结果。这是一个可以做到这一点的混合体:
_.mixin( { reorder: function(list, index){
return _.rest(list,index).concat(_.first(list,index));
}});
var result = _.reorder(array, 3)
相关文章:
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript从数组中随机选择并按字母顺序排列
- Javascript/jQuery:如何从数组的项中获取排列
- Javascript将生日按数组顺序排列
- 重新排列 JavaScript 数组/对象
- 我想重新排列我的数组和其他数组一样,这个数组是键和值
- 重新排列数组的索引以匹配其他数组
- 将元素排列到哈希数组中
- 如何随机排列数组中的对象
- 如何使用 Angular.js/Javascript 重新排列数组值
- 在Javascript上,如何重新排列数组
- 异步forEach,在Node.js中重新排列数组
- Javascript为jquery选择器重新排列数组
- 基于另一个充满“<”和“>”符号的数组排列数组
- Javascript根据值重新排列数组索引
- 树结构中的Javascript排列数组
- 围绕索引重新排列数组
- 重新排列数组元素
- Javascript,在功能上排列数组中的两个项目
- 如何在JQuery中重新排列数组