我的项目中现在有两个数组,我希望合并或合并它们,以便将结果输出到表中。
var array1 = ["a","b"];
var array2 = ["x", "y"];
我知道有类似的方法concat
和push
,但我似乎无法找到一种方法,正是我试图做的,因为concat
只是增加数组。
我的预期输出是
var combinedarray = ["x and a","y and b"];
答案 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);