我有一组具有许多属性的对象。我希望能够根据仅包含数组属性子集的过滤器对象找到匹配项。例如,我有一个客户
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 添加更多属性时,它也会自动过滤这些属性
最佳答案
您可以在 searchObject
的 Object.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/