javascript - 在JavaScript中如何检查数组值是否存在于对象数组中而不重复
问题描述
我有一个数组
let names = ['Devid', 'Aries','James'];
和一个对象数组
let details = [
{"Name":"John"},
{"Name":"Devid"},
{"Name":"Aries"},
{"Name":"Aries"}
];
我想详细检查所有名称是否存在,它们在 1 个循环中的名称不重复如果存在重复值,则将其计为 1 输出应为 count= 2,但我的代码返回 count 3
let names = ['Devid', 'Aries','James'];
let details = [
{"Name":"John"},
{"Name":"Devid"},
{"Name":"Aries"},
{"Name":"Aries"}
];
let count = 0;
for (var eachDetail of details) {
// checking here Name exist
let isNameFound = names.some(el => eachDetail.Name.includes(el));
if (isNameFound) count++;
}
console.log(count);
// console.log(3) expected output 2
输出应为 2(因为 Devid 和 Aries)存在
解决方案
您可以使用reduce
来计算数组中可以在对象值中找到的元素。您可以使用 aSet
删除重复项。
let names = ['Devid', 'Aries','James'];
let details = [
{"Name":"John"},
{"Name":"Devid"},
{"Name":"Aries"},
{"Name":"Aries"}
];
const detailsNames = [...new Set(details.map(d => d.Name))];
const count = [...new Set(names)].reduce((acc, el) => acc + detailsNames.includes(el), 0);
console.log(count);
推荐阅读
- angular - 从 Firebase 获取有条件的项目
- c# - 根据索引交换字符串中的 2 个字符
- eclipse - 不可读的POM(系统找不到指定的路径)
- python-3.x - 如何检索命名元组类(不是实例)的字段?
- spring - org.springframework.beans.factory.UnsatisfiedDependencyException - 自动装配注释不起作用
- nginx - nginx-rtmp 是否对整个 HLS 片段进行一次加密?
- python - 将 Cv2 视频文件保存到另一个位置
- javascript - Javascript:使用同名的旧函数覆盖新函数
- c# - Windows 身份验证不适用于带有 ASP.NET Core 的 IIS
- javascript - 如何将模块模式函数导出到另一个 JavaScript 文件