gpt4 book ai didi

javascript - 基于条件的数组操作JS

转载 作者:行者123 更新时间:2023-11-30 09:18:15 24 4
gpt4 key购买 nike

我有以下数组

0: {productid: "001", containersize: "20", ContCount: 10}
1: {productid: "002", containersize: "20", ContCount: 9}
2: {productid: "001", containersize: "40", ContCount: 4}
3: {productid: "001", containersize: "20", ContCount: 20}
4: {productid: "003", containersize: "20", ContCount: 18}
5: {productid: "001", containersize: "40", ContCount: 7}
6: {productid: "003", containersize: "40", ContCount: 25}

基于这个数组,我想创建一个如下所示的新数组:

0: {productid: "001", containersize20: 30, containersize40: 11, total: 41}
1: {productid: "002", containersize20: 9, containersize40: 0, total: 9}
2: {productid: "003", containersize20: 18, containersize40: 25, total: 43}

基本上,根据产品类型和容器尺寸 20 和 40 计算所有容器。

我使用了下面的代码:

var group_to_values = data.reduce(function (obj, item) {
obj[item.productid] = obj[item.productid] || [];
obj[item.productid].push(item.ContCount);
return obj;
}, {});

var groups = Object.keys(group_to_values).map(function (key) {
return {productid: key, ContCount: group_to_values[key]};
});

但从这里开始,我陷入了如何进一步前进的困境。

最佳答案

这非常适合reduce。根据您的规范迭代构建映射到键的结果对象的结构,然后获取值数组:

const data = [
{productid: "001", containersize: "20", ContCount: 10},
{productid: "002", containersize: "20", ContCount: 9},
{productid: "001", containersize: "40", ContCount: 4},
{productid: "001", containersize: "20", ContCount: 20},
{productid: "003", containersize: "20", ContCount: 18},
{productid: "001", containersize: "40", ContCount: 7},
{productid: "003", containersize: "40", ContCount: 25}
];

const res = Object.values(data.reduce((a, e) => {
if (!(e.productid in a)) {
a[e.productid] = {
productid: e.productid,
containersize20: 0,
containersize40: 0,
total: 0
};
}

a[e.productid].containersize20 += e.containersize === "20" ? e.ContCount : 0;
a[e.productid].containersize40 += e.containersize === "40" ? e.ContCount : 0;
a[e.productid].total += e.ContCount;
return a;
}, {}));

console.log(res);

关于javascript - 基于条件的数组操作JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53492576/

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