将数组中的所有其他值移动到新数组中

Mag*_*ton 5 javascript arrays lodash

我有两个一维数组,a并且b. a有值且b为空。的长度a是偶数。我想从 中删除所有其他值a并将它们移动到b,按照它们放置在 中的顺序相同a

var a = [1, 2, 3, 4, 5, 6], b = [];
Run Code Online (Sandbox Code Playgroud)

变成

var a = [1, 3, 5], b = [2, 4, 6];
Run Code Online (Sandbox Code Playgroud)

我认为这filter可以解决问题,但我对其性能不太满意,因为平均长度为a300-400。

b = a.filter((i, idx) => {
    return idx % 2 == 0;
});
a = a.filter((i, idx) => {
    return idx % 2 == 1;
});
Run Code Online (Sandbox Code Playgroud)

我也一直在查看 lodash,看看该库是否有任何可以帮助我的东西,唯一接近我正在寻找的功能是_.chunk(array, \[size=1\]).

我感谢所有帮助我找到更好、更快的方法来做到这一点的帮助。

Hin*_*ich 2

Vanilla 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])
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上,它是向后迭代a,如果条件为真,则拼接该项目并将其添加为 的第一项b