如何在Javascript中合并/组合两个数组

时间:2018-03-23 14:25:32

标签: javascript arrays loops

如何按此顺序合并或组合两个数组。

var list1 = ["A", "B", "C"];
var list2 = ["X", "Y", "Z"];

 var i = 0;
 for (i = 0; i < list1.length && list2.length; i++) {
     var list3[i] = list1[i] + list2[i];
 }

最终结果将是。

var list3 = ["AX", "BY", "CZ"];

7 个答案:

答案 0 :(得分:5)

您可以像这样使用function(data) { d = data; // variable that changes on user input // creates brand new object with the same data let oldD = Object.create(data.constructor.prototype); data.constructor.apply(oldD); }

map()

您还可以使用模板文字:

let list1 = ["A", "B", "C"];
let list2 = ["X", "Y", "Z"];

let result = list1.map((c, i) => c + list2[i]);

console.log(result);

有用的资源:

答案 1 :(得分:4)

如果长度相同,则可以使用map()方法。

var list1 = ["A", "B", "C"];
var list2 = ["X", "Y", "Z"];

const merged = list1.map((e, i) => e + list2[i]);
console.log(merged)

答案 2 :(得分:3)

您的代码工作正常,只需要在循环之前而不是在其中声明list3

var list1 = ["A", "B", "C"];
var list2 = ["X", "Y", "Z"];

var i = 0;
var list3 = []; //observe this line here
for (i = 0; i < list1.length && list2.length; i++) {
     list3[i] = list1[i] + list2[i]; //var is removed
}

修改

同时观察 for循环条件的变化

for (i = 0; i < list1.length && i < list2.length; i++) { // i needs to be less than list2.length as well
     list3[i] = list1[i] + list2[i]; //var is removed
}

注意

  • 以上代码将确保list3的长度为Math.min (list1.length , list2.length)

答案 3 :(得分:3)

你快到了那里:

var list1 = ['A', 'B', 'C'];
var list2 = ['X', 'Y', 'Z'];
var list3 = [];

for (var i = 0; i < list1.length; ++i) {
  list3[i] = list1[i] + list2[i];
}

在循环外声明list3。由于两个列表的大小相同,因此您只需检查一个。

答案 4 :(得分:2)

您可以使用 map

功能

var list1 = ["A", "B", "C"];
var list2 = ["X", "Y", "Z"];

var result = list1.map((e, i) => e + list2[i])

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

或者,您可以 concat 数组,检查长度,并连接元素:

var list1 = ["A", "B", "C"],
    list2 = ["X", "Y", "Z"],
    jump = list1.length, 
    result = [],
    arr = list1.concat(list2);
    
for (var i = 0; i < jump; i++) result.push(arr[i] + arr[i + jump]);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 5 :(得分:2)

语法问题:

  1. list3声明为空数组。
  2. 请勿使用var重新声明。
  3. &#13;
    &#13;
    var list1 = ["A", "B", "C"];
    var list2 = ["X", "Y", "Z"];
    var list3 = [];
    var i = 0;
    for (i = 0; i < list1.length; i++) {
      list3[i] = list1[i] + list2[i];
    }
    console.log(list3);
    &#13;
    &#13;
    &#13;

答案 6 :(得分:2)

您需要提前声明list3并使用空数组初始化。

您需要检查索引是否小于list2的长度,以便仅获取结果的相同索引处的值。

&#13;
&#13;
var list1 = ["A", "B", "C"],
    list2 = ["X", "Y", "Z"],
    list3 = [],
    i = 0;
    
for (i = 0; i < list1.length && i < list2.length; i++) {
    list3[i] = list1[i] + list2[i];
}

console.log(list3);
&#13;
&#13;
&#13;