如何计算JSON中的数据

How to calculate the data in JSON?

本文关键字:JSON 数据 计算 何计算      更新时间:2023-09-26

本质是我有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_data-json数据

var usersWithLikes = thumbsUp_data.map(function(user_data){
                    return user_data.users.filter(function(value){
                        return value.like == 1;
                    }).length;
                });

但这是不正确的,因为它考虑了有多少人喜欢这个对象。帮助做出决定

过滤掉用户对象,获取返回数组的第一个元素,然后在该对象的用户数组上过滤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

DEMO

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

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