Javascript-在对象数组的属性中搜索字符串

Bor*_*s K 0 javascript json ecmascript-6 ecmascript-2016

我有一组 JSON 对象。给定一个搜索字符串,我只想为那些将该字符串作为其属性之一的子字符串的对象过滤数组。我如何有效地做到这一点?

str*_*str 9

假设要在属性value 中查找子字符串,可以使用以下代码:

const arr = [
  {a:'abc', b:'efg', c:'hij'},
  {a:'abc', b:'efg', c:'hij'},
  {a:'123', b:'456', c:'789'},
];

const search = 'a';

const res = arr.filter(obj => Object.values(obj).some(val => val.includes(search)));

console.log(res);
Run Code Online (Sandbox Code Playgroud)

如果要搜索属性名称,请使用Object.keys代替Object.values

请注意,这Object.values是 ES2017 的一个特性。


小智 5

奇迹般有效:

data.filter((obj) =>
  JSON.stringify(obj).toLowerCase().includes(query.toLowerCase())
)
Run Code Online (Sandbox Code Playgroud)