首页 > 解决方案 > 通过动态道具过滤数组(带有嵌套对象)

问题描述

我有一个 N 个对象的数组。我想编写一个过滤器,使用 JSON.stringify 基于多个动态属性进行过滤。

但是动态没有静态属性(如上面的代码)
你有什么想法吗?

return items.filter(item =>
    JSON.stringify(item.prop1 && item.prop2 && ....)
        .toLowerCase()
        .includes(searchParam)
);

标签: javascriptarraysfilter

解决方案


您将不得不编写一个函数,将您的对象转换为仅具有您想要的属性的精简对象:

function getProperties(obj, propList) {
  var newObj = {};
  propList.forEach(prop => {
    newObj[prop] = obj[prop];
  });
  return newObj;
}

然后您的代码将如下所示:

var propList = ['id','name','date']; // just for example, put whatever properties you want in here
return items.filter(item =>
    JSON.stringify(getProperties(item, propList))
        .toLowerCase()
        .includes(searchParam)
);

推荐阅读