已编辑 我有这个嵌套的 json,我想搜索一个值,然后返回找到该值的整个对象并计算这些对象并使用 map 和 filter 重新创建对象。我不知道该怎么做,因为我是编程的新手。
在示例 json 中,我想搜索水果的值,然后计算所有带有日期的水果值的对象总数。
示例 Json 对象:
var sampleData = [
{
fruitData: {
fruit: 'apple',
price: 23
},
dateCreated: '2019-07-23T00:20:36.535Z'
},
{
fruitData: {
fruit: 'apple',
price: 36
},
dateCreated: '2019-07-23T00:30:32.135Z'
},
{
fruitData: {
fruit: 'apple',
price: 36
},
dateCreated: '2019-07-24T00:10:36.115Z'
},
{
fruitData: {
fruit: 'mango',
price: 40
},
dateCreated: '2019-07-24T01:25:32.835Z'
},
]
我希望输出是这样的,并在搜索 fruits 的值后计数
var filteredData= [
{
'07-23-2019': {
'apple': 2
},
'07-24-2019': {
'apple': 1,
'mango': 1
}
}
]
感谢那些愿意帮助的人
最佳答案
const sampleData = [
{
fruitData: {
fruit: 'apple',
price: 23
},
dateCreated: '07-23-2019'
},
{
fruitData: {
fruit: 'apple',
price: 36
},
dateCreated: '07-23-2019'
},
{
fruitData: {
fruit: 'mango',
price: 40
},
dateCreated: '07-23-2019'
},
];
function groupData(data, key) {
const objs = {};
for (const obj of data) {
objs[obj[key].fruit] = (objs[obj[key].fruit] || 0) + 1;
}
return objs;
}
const data = groupData(sampleData, 'fruitData');
如果你希望数据是一个数组,那么把最后一行改成这个
const data = [groupData(sampleData, 'fruitData')];
关于javascript - 根据嵌套键值计算对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191512/