gpt4 book ai didi

javascript - 将数组转换为具有数组值的对象

转载 作者:行者123 更新时间:2023-11-30 10:59:13 24 4
gpt4 key购买 nike

我需要转换这个数组

[ { _id: 'indoor', count: 12 }, { _id: 'outdoor', count: 34 } ]

进入这个结果:

{ label: ['in', 'out'], data: [12, 34]}

所以我需要获取数组中的标签 (_id) 并将它们替换为一些单独的文本,我需要获取作为数据数组的值。当然两者的顺序应该是一样的。

对于第二部分,我会做类似的事情

array.map(c => c.count)

我可以对标签值做同样的事情,但我该如何使用单独的文本呢?例如。 “室内”应替换为“汽车”,“室外”应替换为“飞机”。

最佳答案

你可以使用reduce方法:

let sourceData = [
{ _id: 'indoor', count: 12 },
{ _id: 'outdoor', count: 34 }
];

const maps = {indoor: 'in', outdoor: 'out'};

const result = sourceData.reduce((a, c) => {
a.label = a.label || [];
a.data = a.data || [];

a.label.push(maps[c._id]);
a.data.push(c.count);

return a;
}, {});

console.log(result);

您可以按自定义顺序对所需的数组进行排序:

let sourceData = [
{ _id: 'indoor', count: 12 },
{ _id: 'outdoor', count: 34 }
];

const maps = {indoor: 'in', outdoor: 'out'};

const result = sourceData.reduce((a, c) => {
a.label = a.label || [];
a.data = a.data || [];

a.label.push(maps[c._id]);
a.data.push(c.count);

return a;
}, {});

result.label.sort((a, b) => {
const order = {'out': 1, 'in': 2, undefined: 3};
return order[a] - order[b];
});

console.log(`custom order of labels: `, result);

关于javascript - 将数组转换为具有数组值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58596859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com