Javascript 如何计算JSON中的数据?
本质上,我有一个json文件:Javascript 如何计算JSON中的数据?,javascript,jquery,json,Javascript,Jquery,Json,本质上,我有一个json文件: [ { "id": 0, "username": "Antony", "users": [ { "id": 1, "like": 0 }, {
[
{
"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
为什么会有缺点?我不明白!