如何根据索引拼接2个数组

5

我想要合并两个数组:

arr1 = [["apple"], ["banana", "cherry"]]
arr2 = ["id1", "id2"]

我希望得到以下的输出结果:
result = [["apple id1"], ["banana id2", "cherry id2"]]

或者
result = [["apple from id1"], ["banana from id2", "cherry from id2"]]

我尝试过使用concat,但是它没有为每个元素保留ID。 作为一名新手开发者,我迄今未找到任何能够给我正确输出的结果。 请问有什么提示可以帮助我解决这个问题吗?


你的第二个数组总是一个索引数组吗? - Utsav Patel
类似 arr1[0][0]+" "+arr2[0] 这样的东西? - Krishna Prashatt
@UtsavPatel:我的第二个数组包含一些字符串,应该是一些类别,其中arr1中的项目是其中的一部分。 - vicky23
4个回答

3
您需要的是Array#map

arr1 = [["apple"], ["banana", "cherry"]]
arr2 = ["id1", "id2"]

var result = arr2.map((id, idx) => {
  return arr1[idx].map(item => item + " from " + id);
})

console.log(result);


2
你可以将新项目进行映射。最初的回答中提到了这一点。

var arr1 = [["apple"], ["banana", "cherry"]],
    arr2 = ["id1", "id2"],
    result = arr1.map((a, i) => a.map(v => [v, arr2[i]].join(' ')));

console.log(result);


0
像这样的函数会起作用。
function concat(arr1, arr2) {
    for (let i = 0; i < arr1.length; i++) {
        for (let j = 0; j < arr1[i].length; j++) {
            arr1[i][j] += ` ${arr2[i]}`;
        }
    }

    return arr1;
}

你可以像这样执行它

concat([["apple"], ["banana", "cherry"]], ["id1", "id2"])

注意:这会修改arr1,因为它是按引用传递的。如果您希望,可以更改为使用其副本。


0

简单的循环并将“from”添加到结果中。

arr1 = [["apple"], ["banana", "cherry"]];
arr2 = ["id1", "id2"];


for (var i = 0; i < arr1.length; i++){
  
  arr1[i] = arr1[i].join() + " from " + arr2[i]

}

console.log(arr1);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接