使用javascript根据索引合并多个数组

新手上路,请多包涵

我需要将两个数组合并为一个数组。我有代码,但它没有按预期工作——它正在一个接一个地合并它们,但我需要互锁这些值。

 <html>

<head>
    <title></title>
    <script src="https://code.jquery.com/jquery-3.1.1.js"></script>
</head>

<body>
    <div id="result"></div>
    <script type="text/javascript">
    var array1 = [1, 2, 3, 4];
    var array2 = ["a", "b", "c", "d"];
    var newArray = $.merge(array1, array2);
    $("#result").html(newArray);
    //the result its 1234absd
    //ineed result like 1a,2b,3c,4d
    </script>
</body>

</html>

原文由 Shabi Levi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 628
2 个回答

您可以在纯 JavaScript 中使用 Array#map

 var array1 = [1, 2, 3, 4];
var array2 = ["a", "b", "c", "d"];

var newArray = array1.map((e, i) => e + array2[i]);
console.log(newArray);

如果在 array1 上使用 map,则第一个参数是循环中 array1 的当前值,第二个参数是该元素在数组中的索引。因此,您可以使用索引将 array1 中的当前元素与具有相同索引的其他数组中的元素进行匹配。

 var array1 = [1, 2, 3, 4];
var array2 = ["a", "b", "c", "d"];
var array3 = ["f", "d", "s", "a"];

var newArray = array1.map(function(value, index) {
  return value + array2[index] + array3[index];
});
console.log(newArray);

原文由 Nenad Vracar 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 Array#reduceArray#map 来获得任意数量的具有相同长度的数组。

 var a1 = [1, 2, 3, 4],
    a2 = ["a", "b", "c", "d"],
    a3 = [9, 8, 7, 6],
    a4 = ["z", "y", "x", "w"],
    result = [a1, a2, a3, a4].reduce((a, b) => a.map((v, i) => v + b[i]));

console.log(result);

ES5

 var a1 = [1, 2, 3, 4],
    a2 = ["a", "b", "c", "d"],
    a3 = [9, 8, 7, 6],
    a4 = ["z", "y", "x", "w"],
    result = [a1, a2, a3, a4].reduce(function (a, b) {
        return a.map(function (v, i) {
            return v + b[i];
        });
    });

console.log(result);

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题