Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中计算对象数组中的某些元素?_Javascript_Arrays_Json - Fatal编程技术网

如何在JavaScript中计算对象数组中的某些元素?

如何在JavaScript中计算对象数组中的某些元素?,javascript,arrays,json,Javascript,Arrays,Json,我试图计算这个JSON文件中每个元素的出现次数 [ { "firstName": "Sena", "lastName": "Turan", "age": 19, "retired": false }, { "firstName": "Çınar&

我试图计算这个JSON文件中每个元素的出现次数

[
    {
        "firstName": "Sena",
        "lastName": "Turan",
        "age": 19,
        "retired": false
    },
    {
        "firstName": "Çınar",
        "lastName": "Turan",
        "age": 1,
        "retired": false
    },
    {
        "firstName": "Ahmet",
        "lastName": "Turan",
        "age": 55,
        "retired": true
    }
]

比如它包含多少“firstName”或“age”变量。有人对此有意见吗?谢谢。

你的数组。过滤器(person=>“age”亲自过滤)。例如,长度应该适用于年龄。您可以调整它的其他属性。

您可以减少数组并增加数组对象中每个元素的计数:

const arr=[{“firstName”:“Sena”,“lastName”:“Turan”,“age”:19,“retired”:false},{“firstName”:“chiınar”,“lastName”:“Turan”,“age”:1,“retired”:false},{“firstName”:“Ahmet”,“lastName”:“Turan”,“age”:55,“retired”:true};
const result=arr.reduce((acc,curr)=>{
对于(让el以货币表示){
acc[el]=acc[el]==null?1:acc[el]+1;
}
返回acc;
}, {});

控制台日志(结果)您也可以简单地浏览所有项目并检查您想要的特定项目:

const arr=[{“firstName”:“Sena”,“lastName”:“Turan”,“age”:19,“retired”:false},{“firstName”:“chiınar”,“lastName”:“Turan”,“age”:1,“retired”:false},{“firstName”:“Ahmet”,“lastName”:“Turan”,“age”:55,“retired”:true};
常量计数=(it)=>{
让计数=0;
对于(arr的el){
if(el[it]){
计数++;
}
}
返回计数;
};

console.log(count(“firstName”)如果我可以添加我的尝试,这是用ES6编写的:

const countAppearance = key => {
    let count = 0;
    arr.forEach(record => (count += record[key] ? 1 : 0));
    return count;
};

@tunayvaz还有一个非常重要的细节:所有这些函数实际上并没有检查键本身,而是检查该键的值是否存在。也就是说,如果您未定义所有“年龄”,它将为您提供0,即使年龄出现在所有3条记录中。如果您想要一个严格工作的函数,您可能需要查看Object.keys()或其他内容。

谢谢您的快速回答。非常感谢你的帮助。这仅在JSON数据写入JS文件时有效。我有一个包含这些变量的外部本地JSON文件。当我在这种情况下尝试这个解决方案时,我的输出是:{0:1,1:1,2:1}而不是{“firstName”:3,“lastName”:3,“age”:3,“retired”:3}我哪里做错了?谢谢。写
const arr=JSON.parse(file)
然后@tunayvazIt工作得很好,谢谢你的帮助。但我想知道“el”和“it”变量代表什么?很抱歉,我只是不熟悉JS。它只是您定义的一个参数,名称并不重要,可以是任何东西:el基本上说明了数组中的元素。尝试阅读有关循环的内容,它会变得更清晰我认为
const countAppearance=(arr,key)=>arr.reduce((acc,rec)=>acc+(Object.keys(rec).includes(key)?1:0,0)会更干净。这是非常重要的细节。谢谢你的介绍。实际上,我需要的是计算键的值(如果它们存在),而不是键本身。我的糟糕表现。