let array1 = [{name:"ABC",add:"XYZ"},{name:"PQR",add:"CCC"}];
let array2 = [1,2]
我希望输出为
array1=[{name:"ABC",add:"XYZ",num:1},{name:"PQR",add:"CCC",num:2}];
我还想知道我的array2是否也是键名奇怪的对象数组,但是在结果数组中我想要一个像这样的好键名
let array1 = [{name:"ABC",add:"XYZ"},{name:"PQR",add:"CCC"}];
let array2=[{weirdKey:1},{weirdKey:2}];
但是结果数组将很整洁
array1=[{name:"ABC",add:"XYZ",num:1},{name:"PQR",add:"CCC",num:2}];
答案 0 :(得分:2)
您可以执行以下操作(假设两个数组的长度相同):
array1 = array1.map((el, i) => {
el.num = array2[i];
return el;
});
修改:
对于第二种情况,如果不确定weirdKey
是什么,可以执行以下操作:
array1 = array1.map((el, i) => {
el.num = Object.values(array2[i])[0];
return el;
});
答案 1 :(得分:1)
在下面尝试一下:
如果array2只是一个列表:
let array1 = [{name:"ABC",add:"XYZ"},{name:"PQR",add:"CCC"}];
let array2 = [1,2];
array1 = array1.map(function (item_1, index_1) {
array2.map(function (item_2, index_2) {
if (index_1 == index_2) {
item_1['num'] = item_2
}
});
return item_1
});
console.log(array1);
如果array2是对象列表,请尝试以下操作:
array1 = array1.map(function (item_1, index_1) {
array2.map(function (item_2, index_2) {
if (index_1 == index_2) {
item_1['num'] = item_2['weirdKey']
}
});
return item_1
});
console.log(array1);
答案 2 :(得分:1)
以下内容适用于您的两种情况:
let array1 = [{ name: "ABC", add: "XYZ" }, { name: "PQR", add: "CCC" }];
let array2 = [{ weirdKey: 1 }, { weirdKey: 2 }];
array1.forEach((element, i) => {
array1[i].num = array2[i].weirdKey ? array2[i].weirdKey : array2[i];
});
console.log(array1);
答案 3 :(得分:1)
简单的纯函数:
const combineToArrayFn =
(array1, array2, key = '') =>
array1.map((item, i) => ({...item, num: array2[i][key] || array2[i]}));
const newArray = combineToArrayFn(array1, array2);
const newArray1 = combineToArrayFn(array1, array2, 'weirdKey');
答案 4 :(得分:1)
使其更简单:
array1.forEach((e,index)=>{
array1[index]["num"]=array2[index].weirdKey;
});
也许可以解决您的问题。
您还可以在array1上使用简单的for循环,而不是使用forEach()或map()函数。
答案 5 :(得分:1)
尝试对数组使用map()方法
// without weirdKey
let array1 = [{ name: "ABC", add: "XYZ" }, { name: "PQR", add: "CCC" }]
let array2 = [1, 2];
array1.map((item, index) => item.num = (array2[index].weirdKey) ? array2[index].weirdKey : array2[index])
console.log(array1)
// with weirdKey same function
let array3 = [{ name: "ABC", add: "XYZ" }, { name: "PQR", add: "CCC" }]
let array4 = [{ weirdKey: 1 }, { weirdKey: 2 }];
array3.map((item, index) => item.num = (array4[index].weirdKey) ? array4[index].weirdKey : array4[index])
console.log(array3)