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

3
如何按照指定顺序合并或组合两个数组。
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"];

我猜你已经有了正确的答案,对吧? - Praveen Kumar Purushothaman
2
使用map函数 - Luis felipe De jesus Munoz
如果数组长度不相等呢? - Kunal Mukherjee
@LuisfelipeDejesusMunoz,如果他需要支持旧版浏览器,map将无法在IE8及以下版本中使用。 - rodrigocfd
@Rodrigo 那将是一个非常奇怪的情况(使用 IE<11)。但在这种情况下,他需要使用一个 poly-fill。 - Luis felipe De jesus Munoz
7个回答

6
你可以像这样使用 map()

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

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

console.log(result);

你还可以使用模板字面量:

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

let result = list1.map((c, i) => `${c}${list2[i]}`);

console.log(result);

有用的资源:


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

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

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


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
你差点就成功了:
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声明在循环外。由于两个列表大小相同,因此只需要检查一个。


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; }


2

语法问题:

  1. list3声明为空数组。
  2. 不要使用var重新声明。

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);


2
你需要事先声明list3并用空数组初始化。
你还需要检查索引是否小于list2的长度,以便仅获取相同索引处的值作为结果。

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);


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