通过任何字段反应过滤对象数组
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);
假设我有一个对象数组
姓名: 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);