本质是我有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;
});
但这不正确,因为它会考虑有多少人喜欢这个对象。 帮助做出决定......
答案 0 :(得分:0)
thumbsUp_data.forEach(function(data) {
data.users.forEach(function(value) {
usersWithLikes[value.id] = usersWithLikes[value.id] || 0;
usersWithLikes[value.id] += value.like;
});
});
多数,这是一个解决方案!
答案 1 :(得分:0)
过滤掉用户对象,抓住返回数组的第一个元素,然后过滤该对象的用户数组,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