通过任何字段反应过滤对象数组

React filter array of object by any field

假设我有一个对象数组

姓名: 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);