在JavaScript中将几个数组组合成一个对象数组

前端之家收集整理的这篇文章主要介绍了在JavaScript中将几个数组组合成一个对象数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有三个数组,描述了一些名称,阅读的书籍数量以及这些人[名字]中有多棒:
  1. let names = ["Mary","Joe","Kenan"];
  2. let numberOfBooks = [2,1,4];
  3. let awesomenessLevel = ["pretty cool","meh","super-reader"];

我正在尝试使用.reduce()将它们组合在一起以创建一个包含每个数组中相关索引的对象数组,但我失败了:

  1. let people = [
  2. {
  3. name: "Mary",noOfBooks: 2,awesomeness: "pretty cool"
  4. },{
  5. name: "Joe",noOfBooks: 1,awesomeness: "meh"
  6. },{
  7. name: "Kenan",noOfBooks: 4,awesomeness: "super-reader"
  8. }
  9. ]

我也减少了它:

  1. let arrFinal = [];
  2.  
  3. names.reduce(function(all,item,index) {
  4. arrFinal.push({
  5. name: item,noOfBooks: numberOfBooks[index],awesomeness: awesomenessLevel[index]
  6. })
  7. },[]);

解决方法

你可以用map来做,像这样:
  1. let result = names.map( (v,i) => ({
  2. name: names[i],noOfBooks: numberOfBooks[i],awesomenessLevel: awesomenessLevel[i]
  3. }));
  1. let names = ["Mary","super-reader"];
  2.  
  3. let result = names.map( (v,awesomenessLevel: awesomenessLevel[i]
  4. }));
  5.  
  6. console.log(result);
  1. .as-console-wrapper { max-height: 100% !important; top: 0; }

在这种情况下,map比reduce更好,因为names数组中的元素数量(或其他两个元素中的任何一个)与输出中所需的元素数量相同.在这种情况下,使用地图更自然.

猜你在找的JavaScript相关文章