通过任意字段反应对象的过滤器数组



假设我有一个具有的对象数组

名称:id:学校:地址:

我知道如何按一个类别进行筛选,例如

data.filter(data => data[name].includes("Lake"))

以获取名称中包含单词Lake的所有对象。

但是,有没有一种方法可以过滤数据,以获得任何字段都包含单词的所有对象?

data.filter(data => data.includes("Lake"))

不起作用,我已经试过了。

谢谢!

const arr = [
{ id: 1, name: "name_1", school: "school_1", address: "address_1" },
{ id: 2, name: "lake", school: "school_2", address: "address_2" },
{ id: 3, name: "name_3", school: "lake", address: "address_3" },
{ id: 4, name: "name_4", school: "school_4", address: "lake" }
];
const anyKeyFilter = item => obj => Object.values(obj).includes(item);
const filteredArr = arr.filter(anyKeyFilter("lake"));
console.log(filteredArr);

如果需要,可以使用trim().toLowerCase()

const arr = [
{ id: 1, name: "name_1", school: "school_1", address: "address_1" },
{ id: 2, name: "lake", school: "school_2", address: "address_2" },
{ id: 3, name: "name_3", school: "lake", address: "address_3" },
{ id: 4, name: "name_4", school: "school_4", address: "lake" }
];

const filteredArr = arr?.filter((data) => Object.values(data)?.includes('lake'));
console.log(filteredArr);

最新更新