使用filter() 过滤数据,结合some() 使用includes() 检查多个keys 是否匹配至少一个来自values 的字符串
// array --------------------
const data = [
{ id: '123', color: 'Red', model: 'Tesla' },
{ id: '124', color: 'Black', model: 'Honda' },
{ id: '125', color: 'Red', model: 'Audi' },
{ id: '126', color: 'Blue', model: 'Tesla' },
];
// filter exact match --------------------
const keysExact = ['color', 'model'];
const valuesExact = ['Tesla', 'Audi', 'Red'];
const resultExact = data.filter((item) =>
keysExact.every((a) => valuesExact.includes(item[a]))
);
console.log(resultExact);
// result:
// [
// { id: '123', color: 'Red', model: 'Tesla' },
// { id: '125', color: 'Red', model: 'Audi' },
// ];
使用filter() 过滤数据,结合some() 使用includes() 检查多个keys 是否包含至少一个来自values 的字符串。
// array --------------------
const data = [
{ id: '123', color: 'Red', model: 'Tesla' },
{ id: '124', color: 'Black', model: 'Honda' },
{ id: '125', color: 'Red', model: 'Audi' },
{ id: '126', color: 'Blue', model: 'Tesla' },
];
// filter data by keys containing values string (at least one of the string in values) --------------------
const keysSome = ['color', 'model'];
const valuesSome = ['Tes', 're'];
const resultSome = data.filter((item) =>
keysSome.some((key) =>
valuesSome.some((val) => item[key].toLowerCase().includes(val.toLowerCase()))
)
);
console.log(resultSome);
// result:
// [
// { id: '123', color: 'Red', model: 'Tesla' },
// { id: '125', color: 'Red', model: 'Audi' },
// { id: '126', color: 'Blue', model: 'Tesla' },
// ];
使用filter()过滤数据,结合every()检查多个keys是否包含来自values的所有字符串,使用includes()。
// array --------------------
const data = [
{ id: '123', color: 'Red', model: 'Tesla' },
{ id: '124', color: 'Black', model: 'Honda' },
{ id: '125', color: 'Red', model: 'Audi' },
{ id: '126', color: 'Blue', model: 'Tesla' },
];
// filter data by keys containing values string (matches all strings from values) --------------------
const keysEvery = ['color', 'model'];
const valuesEvery = ['Tes', 're'];
const resultEvery = data.filter((item) =>
keysEvery.every((key) =>
valuesEvery.some((val) => item[key].toLowerCase().includes(val.toLowerCase()))
)
);
console.log(resultEvery);
// result:
// [
// { id: '123', color: 'Red', model: 'Tesla' }
// ]