我有两个一维数组,a和b. a有值,b是空的. a的长度是偶数.我想删除a中的所有其他值并将它们移动到b,其顺序与放置在a中的顺序相同.
var a = [1, 2, 3, 4, 5, 6], b = [];
变
var a = [1, 3, 5], b = [2, 4, 6];
我认为过滤器可以做到这一点,但我对它的性能并不满意,因为a的平均长度是300-400.
b = a.filter((i, idx) => {
return idx % 2 == 0;
});
a = a.filter((i, idx) => {
return idx % 2 == 1;
});
我一直在看lodash,看看那个图书馆是否有任何可能对我有帮助的东西,而且我所寻找的唯一功能就是_.chunk(array, \[size=1\])
.
我很感激帮助我找到更好,更快的方法.
解决方法:
香草JS ES5,简洁干净.
var a = [1, 2, 3, 4, 5, 6], b = [];
for(var i = a.length-1; i >= 0; i--) {
if(i % 2 === 1) {
b.unshift(a.splice(i, 1)[0])
}
}
基本上,它是向后迭代,如果条件为真,则拼接项目并将其添加为b的第一项.