如何创建多过滤功能来过滤掉多个属性?

IT技术 javascript filter frontend
2021-03-19 09:32:45

我有一组要过滤的对象:

[
  {
    "name": "Apple",
    "age": 24,
    "model": "Android",
    "status": "Under development",
  },

  {
    "name": "Roboto",
    "age": 24,
    "model": "Apple",
    "status": "Running",
  },
  
  .
  .
  .
  .

]  

我需要使用 JavaScript 的filter方法使用多个参数过滤数组我有一个部分解决方案,但无法获得预期的输出。

过滤器还应该处理单个属性的多个值。例如,age=54,23model="Android","Apple"等。

我正在尝试模拟过滤器的工作方式,就像电子商务网站的工作方式一样,我们可以在其中比较产品的所有属性和客户选择的标签,以输出经过过滤的产品列表。

1个回答

如果您像数据数组中的对象一样格式化过滤条件,但值是可能值的数组,则可以filter按如下方式使用该方法:

let data = [
  {
    "name": "Apple",
    "age": 24,
    "model": "Android",
    "status": "Under development",
  }, {
    "name": "Roboto",
    "age": 24,
    "model": "Apple",
    "status": "Running",
  }, {
    "name": "Samsung",
    "age": 26,
    "model": "Blueberry",
    "status": "Running",
  },
];

let filter = {
    "name": ["Roboto", "Ericsson"],
    "age": [22, 24, 26],
};

let res = data.filter(obj =>
    Object.entries(filter).every(([prop, find]) => find.includes(obj[prop])));
    
console.log(res);

谢谢!让我检查一下。
2021-05-10 09:32:45