Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 如何计算JSON中的数据?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何计算JSON中的数据?

Javascript 如何计算JSON中的数据?,javascript,jquery,json,Javascript,Jquery,Json,本质上,我有一个json文件: [ { "id": 0, "username": "Antony", "users": [ { "id": 1, "like": 0 }, {

本质上,我有一个json文件:

[
    {
        "id": 0,
        "username": "Antony",
        "users": [
            {
                "id": 1,
                "like": 0
            },
            {
                "id": 2,
                "like": 1
            },
            {
                "id": 3,
                "like": 0
            },
            {
                "id": 4,
                "like": 1
            }
        ]
    },
    {
        "id": 1,
        "username": "Janet",
        "users": [
            {
                "id": 0,
                "like": 0
            },
            {
                "id": 2,
                "like": 1
            },
            {
                "id": 3,
                "like": 1
            },
            {
                "id": 4,
                "like": 1
            }
        ]
    },.......
我需要计算有多少“喜欢”,每个用户。 即: 例如,以第一个id==0为例。 我们传递对象,对象可以非常简单,看起来: 如果id==0且like==1,则将1添加到数组中。 最后,我必须: usersWithLikes[id User]=所有对象的喜欢次数 例如:

usersWithLikes[0]=3

usersWithLikes[1]=1

usersWithLikes[2]=4

usersWithLikes[3]=0

目前,我认为是这样:

thumbsUp_数据-json数据

var usersWithLikes = thumbsUp_data.map(function(user_data){
                    return user_data.users.filter(function(value){
                        return value.like == 1;
                    }).length;
                });
但这是不正确的,因为它考虑了有多少人喜欢该对象。 帮助做出决定…

thumbsUp_data.forEach(function(data) {
    data.users.forEach(function(value) {
        usersWithLikes[value.id] = usersWithLikes[value.id] || 0;
        usersWithLikes[value.id] += value.like;
    });
});

仅此而已,这是一个解决方案

过滤掉用户对象,获取返回数组的第一个元素,然后在该对象的用户数组上过滤
like==1
返回其长度

function howManyLikes(id) {
  return arr.filter(function (user) {
    return user.id === id;
  })[0].users.filter(function (el) {
    return el.like === 1;
  }).length;
}

howManyLikes(1); // 3

为什么会有缺点?我不明白!