Javascript/JQuery 对象数组按属性交集

标签 javascript jquery arrays

给定两个数组:

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/

相关文章:

javascript - Angular 9->10 迁移。 TypeError : core_1. virtualFs.createSyncHost 不是函数

javascript - jQuery fadeIn 在不同页面上使用不同的图像

javascript - 如何在页面加载时使用 JavaScript/jQuery 删除 <p> 标签中的所有特殊字符

javascript - 整个页面加载后 slider 加载

php - 通过选择菜单跳转到 anchor w/o 使用 jquery 提交

arrays - Javassist CtMethod.make()使用空括号在数组初始化时给出 “syntax error”

java - 如何使数组处理更快?

php - 给定值的索引替换多维数组中的值

javascript - ScriptProcessorNode 跳过

javascript - 绑定(bind)中的 Knockout 2.0 参数顺序不正确?