如何两个数组合并成一个?保留的数组元素和长度

时间:2019-02-02 22:10:36

标签: javascript arrays

我的项目中现在有两个数组,我希望合并或合并它们,以便将结果输出到表中。

var array1 = ["a","b"];
var array2 = ["x", "y"];

我知道有类似的方法concatpush,但我似乎无法找到一种方法,正是我试图做的,因为concat只是增加数组。

我的预期输出是

var combinedarray = ["x and a","y and b"];

4 个答案:

答案 0 :(得分:5)

您可以将map与回调函数的额外索引参数一起使用,以便从第二个数组中获取相应的值:

var array1 = ["a","b"];
var array2 = ["x", "y"];
var result = array1.map((a,i) => `${a} and ${array2[i]}`);
console.log(result);

答案 1 :(得分:3)

您可以像这样使用简单的for loop

var array1 = ["a","b"];
var array2 = ["x", "y"];
var combinedarray = [];

for (i=0; i < array1.length; i++) {
  combinedarray.push(array1[i] + " and " + array2[i]);  
}

console.log(combinedarray);


使用的地图()如图@trincot方法将是这样做虽然更简明和简洁的方法。

答案 2 :(得分:0)

这是在reduce()上使用array2的一种方法:

var array1 = ["a","b"];
var array2 = ["x", "y", "z"];

let res = array2.reduce(
    (acc, e, i) => acc.push(e + " and " + (array1[i] || "?")) && acc,
    []
);

console.log(res);

此外,可以使用传播运算符将其缩短一点:

var array1 = ["a","b"];
var array2 = ["x", "y", "z"];

let res = array2.reduce((acc, e, i) => [...acc, e + " and " + (array1[i] || "?")], []);

console.log(res);

答案 3 :(得分:0)

您可以获取转置的数组,并在以后连接元素以获取可读的字符串。

var array1 = ["a","b"],
    array2 = ["x", "y"],
    result = [array1, array2]
        .reduce((r, a) => a.map((v, i) => [...(r[i] || []), v]), [])
        .map(a => a.concat(a.splice(-2, 2).join(' and ')).join(', '))

console.log(result);

具有三个数组的示例。

var array1 = ["a","b"],
    array2 = ["x", "y"],
    array3 = ["1", "2"],
    result = [array1, array2, array3]
        .reduce((r, a) => a.map((v, i) => [...(r[i] || []), v]), [])
        .map(a => a.concat(a.splice(-2, 2).join(' and ')).join(', '))

console.log(result);