每隔一个地方连接两个数组

问题描述 投票:1回答:8

我有像我的var bar一样的数组,我想在数组中的每个第二位添加var测试。

var test = "foo";

var bar = ["Wilson 1", "Wilson 2"];

var new = ["Wilson 1", "foo" "Wilson 2", "foo"];

我尝试使用concat,但没有结果:

var new = bar.concat(test);
javascript arrays
8个回答
1
投票

这可以通过简单的for循环来实现

var test = "foo";
var bar = ["Wilson 1", "Wilson 2"];
var newA = [];

for (var i = 0; i < bar.lenght; i ++) {
    newA.push(bar[i]);
    newA.push(test);
}

1
投票

这没有标准功能,所以你必须自己做。你会如何解决它?我会

  • 创建一个新数组
  • 循环遍历旧阵列(bar)
  • 对于bar的每次迭代,我都会将一个项添加到新数组+所需的字符串中。

编辑

所有其他答案都很糟糕,我觉得有必要添加一个完整的例子:

const test = "foo";
const bar = ["Wilson 1", "Wilson 2"];

const newA = [];

for (const item of bar) {
  newA.push(item, test);
}

0
投票

您可以采用while循环并将值拼接为每个第二项。

var item = "foo",
    array = ["Wilson 1", "Wilson 2"],
    i = 1;

while (i <= array.length) {
    array.splice(i, 0, item);
    i += 2;
}

console.log(array);

或者使用Array#reduce

var item = "foo",
    array = ["Wilson 1", "Wilson 2"],
    result = array.reduce((r, a) => r.concat(a, item), []);

console.log(result);

0
投票

您可以使用ES6的spread运算符,array.prototype.concatarray.prototype.map

var test = "foo";

var bar = ["Wilson 1", "Wilson 2"];

var result = [].concat(...bar.map(e => [e, test]));

console.log(result);

0
投票

我解决了:

var new = bar.map((m, i) => (m).concat(new Array(test[i])));

0
投票

你可以使用.forEach()

var test = "foo";

var bar = ["Wilson 1", "Wilson 2"];

var newArr = [];

bar.forEach(el => newArr.push(el, test))

console.log(newArr)

-1
投票

你可以使用array#reduce

var test = "foo",
    bar = ["Wilson 1", "Wilson 2"],
    result = bar.reduce((r,v) => {
      r.push(v, test);
      return r;
    },[]);
console.log(result);

-1
投票

使用.reduce并在其中附加current elementtest

var test = "foo";
var bar = ["Wilson 1", "Wilson 2"];

var newArr = bar.reduce((acc, el) => acc.concat([el, test]) , []);

console.log(newArr);
© www.soinside.com 2019 - 2024. All rights reserved.