我有一个对象数组,比如
const data = [
{'name': 'apple', 'type': 'fruit', 'quantity': 5},
{'name': 'orange', 'type': 'fruit', 'quantity': 8},
{'name': 'broccoli', 'type': 'vegetable', 'quantity': 5},
...
]
对于每个唯一的 type
我需要返回一个数组,如
output = [
{
'field': 'fruit',
'count': 2,
'minQuantity': 5,
'maxQuantity': 8,
'values': ['apple', 'orange']
},
{
'field': 'vegetable',
'count': 1,
'minQuantity': 5,
'maxQuantity': 5,
'values': ['broccoli']
}
]
有没有一种简单/有效的方法可以做到这一点?
到目前为止,我所尝试的:
let returnData = [];
let fieldSet = new Set(data.map(a => a.type));
let fields = Array.from(fieldSet);
for (var i = 0; i < fields.length; i++) {
let objs = data.filter(obj => {
return obj.type === fields[i]
})
returnData.push({
field: fields[i],
count: objs.length
})
}
1条答案
按热度按时间erhoui1w1#
您可以先使用
Array.prototype.reduce
,然后使用Object.entries
及Array.prototype.map
可以将对象转换为数组。