给定两个数组:
var users = [{ name: 'Alice', typeID: 1 }, { name: 'Bob', typeID: 2 }, { name: 'Carol', typeID: 3 }];
var authorized = [{ typeID: 1 }, { typeID: 2 }];
我想知道让所有用户拥有授权数组中存在的 typeId 的最简单方法。
在这种情况下,结果应该是:
[{ name: 'Alice', typeID: 1 }, { name: 'Bob', typeID: 2 }]
最佳答案
var result = users.filter(function(user) {
return authorized.some(function(authorizedObj) {
return authorizedObj.typeID === user.typeID;
});
})
应该注意的是,如果您的授权数组仅包含 ID 而不是对象(例如 [1, 2]
),那么解决方案会更简单:
var result = users.filter(function(user) {
return authorized.indexOf(user.typeID) !== -1;
})
关于Javascript/JQuery 对象数组按属性交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221637/