javascript - 根据嵌套键值计算对象

标签 javascript jquery arrays json

已编辑 我有这个嵌套的 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/

相关文章:

javascript - 如何重置这个 JS 对象?

c - 为什么可变长度数组在此 C 代码中工作?

php - 使用用户定义的比较函数在_array 中搜索针

arrays - 在向量前面添加零

javascript - 从 Blob 读取 ArrayBuffer 有错误的数据

javascript - jquery:不关注每隔几秒加载一次的元素

javascript - 如何在 javascript 变量中使用 jquery .css

javascript - 通过类别引入值(value)

javascript - 在站点加载后使用 Jquery 填写表单

PHP MYSQL 复选框搜索