javascript - 使用 .includes 和 .map 来查找匹配值

标签 javascript

我正在尝试测试一个数组是否包含另一个数组中存在的 id。这是第一个数组:

var ids = [
    "N06Jrz5hx6Q9bcVDBBUrF3GKSTp2",
    "eLLfNlWLkTcImTRqrYnU0nWuu9P2"
]

这是用户对象的示例:

var userExample = {
    "category": "Chemia",
    "coins": 100,
    "friends": {},
    "level": "Liceum",
    "newAnswers": false,
    "nickname": "czainusek",
    "notifications": true,
    "safety": true,
    "tagID": "drawable/icon_other1",
    "tasksUploaded": 0,
    "works": {
        "-LI1z-yO4MJnPwrdwHGl": "-LI1z-tB6EpqIhJwzchP",
        "-LIHAwCpc84UQqGeT1bU": "-LIHAw8RuTZxfgz0ef8G",
        "-LIHB2Ov5B-4XqpM79Av": "-LIHB2IPmMqOxa3UPFxs"
    },
    "id": "Nqez1dKRJ6aEpOb4BuUOK75iJoJ2"
}

我有一个所述对象的数组。它们看起来都是这样的:

var usersExamples = [
    {
        "category": "Chemia",
        "coins": 100,
        "friends": {},
        "level": "Liceum",
        "newAnswers": false,
        "nickname": "czainusek",
        "notifications": true,
        "safety": true,
        "tagID": "drawable/icon_other1",
        "tasksUploaded": 0,
        "works": {
            "-LI1z-yO4MJnPwrdwHGl": "-LI1z-tB6EpqIhJwzchP",
            "-LIHAwCpc84UQqGeT1bU": "-LIHAw8RuTZxfgz0ef8G",
            "-LIHB2Ov5B-4XqpM79Av": "-LIHB2IPmMqOxa3UPFxs"
        },
        "id": "Nqez1dKRJ6aEpOb4BuUOK75iJoJ2"
    },
    {
        "coins": 20,
        "friends": {},
        "level": "Gimnazjum",
        "newAnswers": false,
        "nickname": "Tomasz ",
        "notifications": true,
        "safety": true,
        "tagID": "drawable/emot_icons1",
        "tasksUploaded": 5,
        "id": "SAlVGjXIagdDuJrHYO4i6LwzUql2"
    }
]

知道这一点后我尝试了这样的事情:

console.log(reportIds.includes(users.map(user => user.id)));

这返回了 false。但如果我尝试这样的 id:

console.log(reportIds.includes('N06Jrz5hx6Q9bcVDBBUrF3GKSTp2'));

它返回 true。

具有所述 ID 的对象存在。我手动检查了 ids。我试过这个:

console.log(reportIds.includes(['8VbBNBDrT1Z3kmyaQzy6LqskcOT2', 'N06Jrz5hx6Q9bcVDBBUrF3GKSTp2'].map(id => id)));

但这返回了 false。

与此相同:

console.log(reportIds.includes(['8VbBNBDrT1Z3kmyaQzy6LqskcOT2', 'N06Jrz5hx6Q9bcVDBBUrF3GKSTp2']));

那么如何检查 ids 数组中包含哪些 id?

最佳答案

您可以使用 Array#filter 的组合和 Array#includes为此:

let ids = [
    "N06Jrz5hx6Q9bcVDBBUrF3GKSTp2",
    "eLLfNlWLkTcImTRqrYnU0nWuu9P2"
];

let usersExamples = [
    {
        "id": "Nqez1dKRJ6aEpOb4BuUOK75iJoJ2"
    },
    {
        "id": "SAlVGjXIagdDuJrHYO4i6LwzUql2"
    },
    {
        "id": "eLLfNlWLkTcImTRqrYnU0nWuu9P2"
    }
];

let result = usersExamples.filter(u => ids.includes(u.id));
console.log(result);

关于javascript - 使用 .includes 和 .map 来查找匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557853/

相关文章:

javascript - 第二个 .then() on promise 被调用时数据未定义

javascript - 如何使用两个数组按条件聚合数据?

javascript - Javascript 中的属性继承

javascript - Greensock 动画是如何在其如此高效的引擎盖下工作的?

javascript - 即使机器人是管理员,Discord JS 管理角色权限也会丢失

javascript - 使用 jquery 在加载页面上的 strust2 中自动完成

javascript - 如何让我的菜单逻辑更简洁?

javascript - Angularjs - 复选框 - 计算多个选定/未选定的项目

javascript - 如何在 Webpacker 中正确加载和执行 JavaScript

javascript - 如何根据列为空或不为空的位置从类中隐藏每个 Div