【发布时间】:2021-12-08 11:20:26
【问题描述】:
我正在尝试找到最简洁的方法来根据字符串关键字实现对对象数组的过滤器。我需要返回那些只有特定属性包含字符串值的对象。
假设我有以下对象数组:
const products = [
{
name: 'car',
price: 100,
image: 'someurl'
email: 'car@car.car'
available: true,
},
{
name: 'phone',
price: 200,
image: 'someurl'
email: 'phone@phone.phone'
available: false,
},
{
name: 'bottle',
price: 300,
image: 'someurl'
email: 'bottle@bottle.bottle'
available: true,
},
];
这里提到:Filter array of objects whose any properties contains a value
匹配属性具有不同类型的对象数组中的任何值的最简洁方法之一是:
function filterByValue(array, string) {
return array.filter(o =>
Object.keys(o).some(k => String(o[k]).toLowerCase().includes(string.toLowerCase())));
}
此 filterByValue 函数将返回任何属性与字符串值匹配的对象。
但是,我想添加一些条件,所以它只迭代并在“名称”、“价格”和“电子邮件”属性中查找一些匹配项,而不是查看“图像”和“可用”属性。
【问题讨论】:
标签: javascript arrays filter