根据多个值过滤对象数组

问题描述 投票:0回答:1

我有一个对象数组,我想根据用户输入过滤掉它。如果用户输入“Red Shirt”,只有包含 {color: "red", clothingType: "shirt"} 等值的条目应该返回,而不是 {color: "red", clothingType: "scarf"} 或{颜色:“蓝色”,clothingType:“衬衫”}。最主要的是,我希望它足够通用,以便在其他情况下重复使用,例如查找“John Smith”以查找 {firstName:"John", lastName:"Smith"} 等对象。

是否有一种简单/干净的方法来实现这个全局过滤器,而不必陷入让用户分别指定颜色和服装类型的细节,或者这是不可避免的?

我已经通过检索“data[key]”的值然后使用“includes”来检查对象中是否存在“red”或“shirt”来使用单个值的简化版本,但是我'我不确定如何串联搜索多个值。

javascript json search filter
1个回答
0
投票

假设在你的情况下你总是有一对,这段代码对你有用:

const input = "John Smith";
const data = [
  { firstName: "Carl", lastName: "Gauss" },
  { firstName: "John", lastName: "Smith" },
  { firstName: "Elon", lastName: "Musk" }
];

console.log(
  data.filter((obj) => {
    const values = Object.values(obj);
    if (
      values[0] + " " + values[1] === input ||
      values[1] + " " + values[0] === input
    )
      return true;
  })
);

© www.soinside.com 2019 - 2024. All rights reserved.