javascript 如何将数组中的对象转换为对象数组[关闭]

20jt8wwn  于 12个月前  发布在  Java
关注(0)|答案(2)|浏览(86)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
13小时前关闭
Improve this question
如何将数组对象集合转换为对象数组

const obj = {
  name: ['Sam', 'John', 'Paul'],
  age: [25, 35, 22],
  profession: ['Developer', 'Tester', 'Manager']
}

字符串

const collections = [
  {name: 'Sam', age: 25, profession: 'Developer'},
  {name: 'John', age: 35, profession: 'Tester'},
  {name: 'Paul', age: 22, profession: 'Manager'}
]

2g32fytz

2g32fytz1#

下面是在JavaScript中将数组对象转换为对象数组的两种方法:
方法1:使用map和Object.values:
JavaScript

const obj = {
  name: ['Sam', 'John', 'Paul'],
  age: [25, 35, 22],
  profession: ['Developer', 'Tester', 'Manager']
};

const collections = Object.values(obj[0]).map((value, index) => ({
  name: obj.name[index],
  age: obj.age[index],
  profession: obj.profession[index]
}));

console.log(collections);
// Output:
// [
//   { name: 'Sam', age: 25, profession: 'Developer' },
//   { name: 'John', age: 35, profession: 'Tester' },
//   { name: 'Paul', age: 22, profession: 'Manager' }
// ]

字符串
请谨慎使用代码。了解更多信息
Object.values(obj[0])提取对象中第一个数组的值(名称)。map方法迭代这些值,并使用其他数组中的对应值为每个值创建一个新对象。方法2:使用嵌套的forEach循环:
JavaScript

const collections = [];

Object.keys(obj).forEach((key) => {
  obj[key].forEach((value, index) => {
    if (!collections[index]) {
      collections[index] = {};
    }
    collections[index][key] = value;
  });
});

console.log(collections);


请谨慎使用代码。了解更多信息
外部的forEach循环遍历对象的键。内部的forEach循环遍历每个数组的值。如果集合数组还不存在,它会在集合数组中创建一个新对象,并将值赋给相应的键。要点:
假设数组长度:这两种方法都假设对象中的所有数组具有相同的长度。简洁性:第一种方法使用map和Object.values通常更简洁,可读性更强。可读性:第二种方法使用嵌套的forEach循环,对于那些不太熟悉map的人来说可能更直观。选择你觉得更舒服和更容易理解的方法!

dy2hfwbg

dy2hfwbg2#

下面是一个简单的例子,通过使用reduce从object of arrays中获取一个对象数组:

const obj = {
    name: ['Sam', 'John', 'Paul'],
    age: [25, 35, 22],
    profession: ['Developer', 'Tester', 'Manager'],
  };

const collection = Object.entries(obj).reduce((collectionArray, [key, arrayValues]) => {
    arrayValues.forEach((value, index) =>
      index < collectionArray.length
        ? (collectionArray[index][key] = value)
        : collectionArray.push({ [key]: value })
    );
    return collectionArray;
  }, []);

console.log(collection)

字符串

相关问题