我有一个对象数组,我想根据用户输入过滤掉它。如果用户输入“Red Shirt”,只有包含 {color: "red", clothingType: "shirt"} 等值的条目应该返回,而不是 {color: "red", clothingType: "scarf"} 或{颜色:“蓝色”,clothingType:“衬衫”}。最主要的是,我希望它足够通用,以便在其他情况下重复使用,例如查找“John Smith”以查找 {firstName:"John", lastName:"Smith"} 等对象。
是否有一种简单/干净的方法来实现这个全局过滤器,而不必陷入让用户分别指定颜色和服装类型的细节,或者这是不可避免的?
我已经通过检索“data[key]”的值然后使用“includes”来检查对象中是否存在“red”或“shirt”来使用单个值的简化版本,但是我'我不确定如何串联搜索多个值。
假设在你的情况下你总是有一对,这段代码对你有用:
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;
})
);