javascript - 通过仅包含数组属性子集的对象过滤 javascript 数组

标签 javascript arrays angular typescript filtering

我有一组具有许多属性的对象。我希望能够根据仅包含数组属性子集的过滤器对象找到匹配项。例如,我有一个客户

let Customer = {
    Name: "John Doe",
    Age: 80,
    Hair: "Red",
    Gender: "Male",

};

我有我的搜索对象:

let searchObject ={
    Hair: "Red",
    Gender: "Male"
}

我希望能够在我的数组中找到所有与 searchObject 匹配的客户,而无需执行以下操作:

this.array.filter(z=>z.Hair == searchObject.Hair && z.Gender == searchObject.Gender);

我希望当 searchObject 添加更多属性时,它也会自动过滤这些属性

最佳答案

您可以在 searchObjectObject.keys() 上使用 every() 并检查 中的所有键的值>searchObject 匹配数组中对象的相应值。

在下面的代码片段中,我有两个具有不同 Gender 的对象

let array = [{
    Name: "John Doe",
    Age: 80,
    Hair: "Red",
    Gender: "Male",
},{
    Name: "Marry",
    Age: 80,
    Hair: "Red",
    Gender: "Female",
}]

let searchObject ={
    Hair: "Red",
    Gender: "Male"
}

const res = array.filter(x => Object.keys(searchObject).every(k => x[k] === searchObject[k]));

console.log(res)

关于javascript - 通过仅包含数组属性子集的对象过滤 javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131615/

相关文章:

android 无法将字符串转换为 jsonarray

javascript - javascript 单击后获取数组的下一个元素并将其显示在搜索表单中

javascript - 如何在多种 Material 选择中过滤项目

ruby-on-rails - Angular 4 和 Rails 5 发布请求 JSON 格式化

JavaScript 正则表达式

javascript - 谷歌地图无法加载

C - 以可变大小打印流数组字节

javascript - Angular 2 如何在登录浏览器控制台之前处理 404?

javascript - 覆盖返回对象中的字段 sequelize 模型 nodejs

javascript - 意外的标记 < 读取 xml 文件