我有以下对象/数组:
[
{
"id": null,
"value": "Apples",
"label": "Apples",
"Quantity": 1,
"Weight": "0.075",
"inputQuantity": "2",
"Category": "BREAKFAST",
"ItemCopy": 2,
"PM": "123"
},
{
"Quantity": 1,
"value": "Apples",
"Weight": "0.075",
"id": null,
"label": "Apples",
"inputQuantity": "3",
"Category": "BREAKFAST",
"ItemCopy": 2,
"PM": "123"
},
{
"value": "Asparagus",
"id": "TnwiO97ZHCsz4vl9A9OR",
"label": "Asparagus",
"Weight": "0.185",
"Quantity": 1,
"inputQuantity": "3",
"Category": "BREAKFAST",
"ItemCopy": 1,
"PM": "123"
}
]
然后,我使用以下代码将它们简化为唯一值:
function getUniqueDataCount(objArr, propName) {
const mi = [...objArr]
var data = [];
objArr.forEach(function (d, index) {
if (d[propName]) {
data.push(d[propName]);
}
});
var uniqueList = [...new Set(data)];
var dataSet = {};
for (var i = 0; i < data.length; i++) {
dataSet[uniqueList[i]] = data.filter(x => x == uniqueList[i]).length;
mi[i].ItemCopy = data.filter(x => x == data[i]).length
}
return mi;
}
useMemo(() => {
mydata = getUniqueDataCount(daataa, 'label');
}, [daataa])
useMemo(() => {
newCheck = Object.values(mydata?.reduce((acc, cur) => Object.assign(acc, { [cur?.label]: cur }), {}))
}, [mydata])
然后,新的Check对象/数组变为:
[
{
"Quantity": 1,
"value": "Apples",
"Weight": "0.075",
"id": null,
"label": "Apples",
"inputQuantity": "2",
"Category": "BREAKFAST",
"ItemCopy": 2
},
{
"value": "Asparagus",
"id": "TnwiO97ZHCsz4vl9A9OR",
"label": "Asparagus",
"Weight": "0.185",
"Quantity": 1,
"inputQuantity": "2",
"Category": "BREAKFAST",
"ItemCopy": 1
}
]
这或多或少是我想要的,但是在这个newCheck对象/数组中,它没有正确地计算inputQuantity-对于苹果,它应该是5,对于芦笋,它应该是3.
我如何修改它,以便 for each 唯一的配料获得每次出现的inputQuantity?