首页 > 解决方案 > 遍历多个对象并在新对象中获取相似的键值

问题描述

嗨,我有对象数组,我正在尝试遍历它们并在新对象中具有相似的键值,这是我拥有的数据示例。

let newDats = [{"ID":1, "Name": "Ahmed", "Age":17, "Score":84, "Absentee":3}, 
{"ID":2, "Name": "Hassan", "Age":15, "Score":87, "Absentee":2},
{"ID":3, "Name": "Aisha", "Age":18, "Score":86, "Absentee":2}]

等等。但是,我想要的是:

data = [{ID:[1,2,3], Names:["Ahmed", "Hassan","Aisha"], 
Ages:[17,15,18]}]

等等。我的最终目标是对数据的数字部分执行基本的描述性统计,所以如果有更好的想法,我很想听听我是 js 的新手。

附言

列名(对象键)可能不止于此而且未知,所以我想要一些动态的东西。

提前致谢。

标签: javascriptarraysobject

解决方案


您可以使用以下功能。只需传递array您要排序的。

function dataSorter(dataArr) {
  const data = {};
  for (const item in dataArr[0]) data[item] = [];

  for (let i = 0; i < dataArr.length; i++) {
    for (const item in dataArr[i]) {
      data[item].push(dataArr[i][item]);
    }
  }

  return data;
}

/* Example Below */

let newDats = [{
    ID: 1,
    Name: "Ahmed",
    Age: 17,
    Score: 84,
    Absentee: 3
  },
  {
    ID: 2,
    Name: "Hassan",
    Age: 15,
    Score: 87,
    Absentee: 2
  },
  {
    ID: 3,
    Name: "Aisha",
    Age: 18,
    Score: 86,
    Absentee: 2
  },
];

console.log(dataSorter(newDats));
.as-console-wrapper { max-height: 100% !important; top: 0; } /* Ignore this */


推荐阅读