如何将两个数组合并到一个对象中?

时间:2018-11-04 11:40:09

标签: javascript arrays

我有两个数组名称和标记

我试图将两个数组合并为一个对象,以便以后可以迭代。 就像有两列的表一样,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);

2 个答案:

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