javascript - 操作 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中。
解决方案
您可以使用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
有关解构和分配新变量名称的更多信息。
推荐阅读
- sql - SQL Server:如何通过 1 个单个查询使用案例获得 2 个不同的查询结果?
- python - Pandas:带有日期条件的 SQL SelfJoin
- javascript - 如何在 Nodejs 中将任何城市/国家组合转换为时区?
- javascript - React 和 Material-Ui 在 .js 中定义类并将其作为字符串传递给组件
- regex - VSCode Snippet 的多重转换
- jquery - 如何使用 Django/Heroku 结构更新 json 文件?
- git - 使用 git 在源代码中自动插入元数据字符串?
- javascript - Chrome 性能显示很多“其他”处理
- java - GSON 序列化不返回正确的 json 字符串
- python-3.x - ModuleNotFoundError:无法导入本地文件