首页 > 解决方案 > 操作 json 数据数组

问题描述

我有一个项目,我必须从 GoogleSheet 文档中获取一些数据并将其发送到数据库。我从 googlesheet 文档中获取数据,但问题是数据的结构如何。

[
  {
    class: "A",
    name: "Alex",
    age: 13
  },
  {
    class: "A",
    name: "Mary",
    age: 14
  },
  {
    class: "B",
    name: "John",
    age: 13
  },
  {
    class: "B",
    name: "William",
    age: 12
  }
]

问题是我希望我的 JSON 对象看起来像这样

[
  "A": {
    {
      name: "Alex",
      age: 13
    },
    {
      name: "Mary",
      age: 13
    }
  },
  "B": {
    {
      name: "John",
      age: 13
    },
    {
      name: "William",
      age: 13
    }
  }
]

知道我该怎么做吗?我想将我的对象分组到一个元素上,比如类。所有具有相同类值的人都在同一个组/json中。

标签: javascriptarraysjson

解决方案


您可以使用Array.reduce并格式化它。

let data = [{class:"A",name:"Alex",age:13},{class:"A",name:"Mary",age:14},{class:"B",name:"John",age:13},{class:"B",name:"William",age:12}];

//destructuring and renaming it to `_` as `class` is a pre-defined identifier in javascript
const formatData = (data) => data.reduce((res, {
  class: _,
  ...rest
}) => {
//(res[_] || []) --> If the `class` prop is not already present in the res object, then using empty array
//If already present spreading res[_] and adding the current object to the existing array
  res[_] = [...(res[_] || []), { ...rest }]
  return res;
}, {})

console.log(formatData(data))
.as-console-wrapper {
  max-height: 100% !important;
}

您可以查看Destructuring Assignment有关解构和分配新变量名称的更多信息。


推荐阅读