javascript – 将数组中的每个其他值移动到一个新数组中

我有两个一维数组,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的第一项.

上一篇:javascript – lodash.js在function.apply上的部分应用程序


下一篇:javascript – 比较两个包含对象的数组,以便计算更改的内容?