我有两个列表json
,一个叫做 subscribers ,另一个叫做关注。
以下:
{
0: { id: "u0", username: "user0", avatar: "user0.png" },
1: { id: "u1", username: "user1", avatar: "user1.png" },
2: { id: "u2", username: "user2", avatar: "user2.png" },
3: { id: "u3", username: "user3", avatar: "user3.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" },
5: { id: "u5", username: "user5", avatar: "user5.png" }
}
订户:
{
1: { id: "u1", username: "user1", avatar: "user1.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" }
}
我想从以下 [ following - subscribers = remaining list of following ]
中删除 subscribers 。
如何删除它们取决于两个列表中每个对象的id
属性?
答案 0 :(得分:2)
如果您的密钥与您的ID对齐:
f = {
0: { id: "u0", username: "user0", avatar: "user0.png" },
1: { id: "u1", username: "user1", avatar: "user1.png" },
2: { id: "u2", username: "user2", avatar: "user2.png" },
3: { id: "u3", username: "user3", avatar: "user3.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" },
5: { id: "u5", username: "user5", avatar: "user5.png" }
}
s = {
1: { id: "u1", username: "user1", avatar: "user1.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" }
}
for( i in s ){
delete f[i]
}
答案 1 :(得分:1)
使用lodash很有帮助: _.pullBy(以下信息,订阅者,“ id”)
答案 2 :(得分:1)
一种方法是在跟随者的键(或值)上使用Array.prototype.reduce,以基于未出现在订阅者中的条目创建新对象:
let followers = {
0: { id: "u0", username: "user0", avatar: "user0.png" },
1: { id: "u1", username: "user1", avatar: "user1.png" },
2: { id: "u2", username: "user2", avatar: "user2.png" },
3: { id: "u3", username: "user3", avatar: "user3.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" },
5: { id: "u5", username: "user5", avatar: "user5.png" }
}
let subscribers = {
1: { id: "u1", username: "user1", avatar: "user1.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" }
}
followers = Object.keys(followers).reduce((acc, current) => !Object.values(subscribers).some(sub => sub.id === followers[current].id) ? {...acc, [current]: followers[current]} : acc, {})
console.log(followers)
或者您可以迭代关注者的键并删除“重复项”:
let followers = {
0: { id: "u0", username: "user0", avatar: "user0.png" },
1: { id: "u1", username: "user1", avatar: "user1.png" },
2: { id: "u2", username: "user2", avatar: "user2.png" },
3: { id: "u3", username: "user3", avatar: "user3.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" },
5: { id: "u5", username: "user5", avatar: "user5.png" }
};
let subscribers = {
1: { id: "u1", username: "user1", avatar: "user1.png" },
4: { id: "u4", username: "user4", avatar: "user4.png" }
};
Object.keys(followers).forEach(current => {
if (Object.values(subscribers).some(sub => sub.id === followers[current].id)) {
delete followers[current];
}
});
console.log(followers);