我有两个数组名称和标记
我试图将两个数组合并为一个对象,以便以后可以迭代。 就像有两列的表一样,API的第一个返回名称(例如A,b,c,d等)和第二个返回标记(例如40、50 55、60等)。 收到后,我正在尝试使其成为
的一个可迭代对象finalOutput = [
0: {
A : 45
}
1: {
B: 55
}
2: {
C: 60
}
and so on...
]
我正在尝试采用以下方法,但这并不是一个完整的解决方案。你能建议我应该采取什么方法吗?
var name = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I'];
var tName = name.split(',');
var mark = ['45', '55', '60', '65', '70', '75', '80', '85'];
var nameObj = Object.assign({}, tName );
console.log(nameObj);
var tMark = Object.assign({}, mark);
var finalOutput = [].concat(tName, tMark);
console.log('finalOutput', finalOutput);
答案 0 :(得分:0)
您可以简单地使用Array.map(),假设两个数组的长度相同,并且希望将对象数组作为最终输出,请尝试以下操作:
let names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I'];
let mark = ['45', '55', '60', '65', '70', '75', '80', '85'];
let result = names.map((name,index)=> ({[name] : mark[index]}));
console.log(result);
答案 1 :(得分:0)
您可以使用Array.reduce():
const names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I'];
const marks = ['45', '55', '60', '65', '70', '75', '80', '85'];
const toObject = names.reduce((accum, item, i) => {
accum[item] = marks[i];
return accum;
}, {})
console.log(toObject);
Array.map()可能更具可读性,但是我非常喜欢(并使用)减少对象创建模式(感谢Wes Bos)。
您可能想要创建函数来执行此操作,因此可以重复使用它:
const names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I'];
const marks = ['45', '55', '60', '65', '70', '75', '80', '85'];
const toObject = (toProp, toValue) => {
return toProp.reduce((accum, item, i) => {
accum[item] = toValue[i];
return accum;
}, {})
}
console.log(toObject(names, marks));