【发布时间】:2021-05-14 20:42:47
【问题描述】:
我有来自 CSV 文件的数据,该文件可以包含空白字段,并且必须基于该字段对数据进行分组。
这是一个按位置划分的人员数据的简单示例。位置数据仅针对第一个人显示,并且每个未分配位置的后续人员都属于之前的位置:
"Objects:", [{
location: "New York",
date: "10/10/2021",
name: "Max",
surname: "Payne"
}, {
location: "",
date: "",
name: "Duke",
surname: "Nuken"
}, {
location: "",
date: "",
name: "Jack",
surname: "Carver"
}, {
location: "Las Vegas",
date: "30/10/2021",
name: "Leon",
surname: "Kennedy"
}, {
location: "",
date: "",
name: "Donkey",
surname: "Kong"
}, {
location: "",
date: "",
name: "Ryu",
surname: "Hayabusa"
}]
我需要将人员列表加入一个列表并添加到相应的位置:
"Objects:", [{
location: "New York",
date: "10/10/2021",
persons: [{
name: "Max",
surname: "Payne"
}, {
name: "Duke",
surname: "Nuken"
}, {
name: "Jack",
surname: "Carver"
}]
}, {
location: "Las Vegas",
date: "30/10/2021",
persons: [{
name: "Leon",
surname: "Kennedy"
}, {
name: "Donkey",
surname: "Kong"
}, {
name: "Ryu",
surname: "Hayabusa"
}]
}]
数据最初是以这种形式作为数组的数组来的:
const [headers, ...lines] = [
["location", "date", "name", "surname" ],
["New York", "10/10/2021", "Max", "Payne" ],
["", "", "Duke", "Nuken" ],
["", "", "Jack", "Carver" ],
["Las Vegas", "30/10/2021", "Leon", "Kennedy" ],
["", "", "Donkey", "Kong" ],
["", "", "Ryu", "Hayabusa"],
];
我目前必须将数组转换为这个问题的第一个对象列表的代码是这样的:
const locations = lines.map( (line) =>
line.reduce((object, value, index) =>
({...object, [ headers[index] ]: value})
, {}
));
什么是解决这个问题的好方法?
【问题讨论】:
标签: javascript arrays algorithm csv javascript-objects