我有一个嵌套数组查询。我需要特定格式的数据。它工作正常,只需要知道更好的方法即可。我必须绘制图表。
数据来自 API,格式如下:
[
{
company: 'BMW',
cMin: 20,
cMax: 100,
vMin: 30,
vMax: 90,
},
{
company: 'Audi',
cMin: 10,
cMax: 90,
vMin: 10,
vMax: 80,
},
]
我试过的!
const cRed = { name: 'C Red', data: [] };
const cGreen = { name: 'C Green', data: [] };
const vRed = { name: 'V Red', data: [] };
const vGreen = { name: 'V Green', data: [] };
dataset.forEach((e) => {
cRed.data.push(e.cMin);
cGreen.data.push(e.cMax);
vRed.data.push(e.vMin);
vGreen.data.push(e.vMax);
});
const all = [cRed, cGreen, vRed, vRed];
console.log(all);
预期结果:
[
{ name: 'C Red', data: [ 20, 10 ] },
{ name: 'C Green', data: [ 100, 90 ] },
{ name: 'V Red', data: [ 30, 10 ] },
{ name: 'V Red', data: [ 30, 10 ] }
]
最佳答案
您可以创建一个对象并将其用于名称映射,然后使用 reduce
创建对象并对该对象使用 Object.values
作为最终结果。
const data = [{"company":"BMW","cMin":20,"cMax":100,"vMin":30,"vMax":90},{"company":"Audi","cMin":10,"cMax":90,"vMin":10,"vMax":80}]
const map = {
cMin: 'C Red',
cMax: 'C Green',
vMin: 'V Red',
vMax: 'V Green'
}
const obj = data.reduce((r, { company, ...rest }) => {
Object.entries(rest).forEach(([key, value]) => {
if (key in map) {
if (!r[key]) r[key] = {
name: map[key],
data: []
}
r[key].data.push(value)
}
})
return r;
}, {})
const result = Object.values(obj)
console.log(result)
关于javascript - 在嵌套数组概念方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59443848/