【问题标题】:Filter array of objects whose specific properties contains a value过滤特定属性包含值的对象数组
【发布时间】: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


    【解决方案1】:

    创建一个要查看的属性数组,然后查看它们而不是使用Object.keys

    const propsToCheck = ['name', 'price', 'email'];
    function filterByValue(array, string) {
        return array.filter(o =>
            propsToCheck.some(k => String(o[k]).toLowerCase().includes(string.toLowerCase())
            )
        );
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 2017-05-25
      • 2021-08-05
      • 2019-05-04
      • 2020-02-13
      相关资源
      最近更新 更多