我想知道根据 string keyword
过滤对象数组的最干净、更好的方法是什么。必须在对象的任何属性中进行搜索。
当我键入 lea
我想遍历所有对象及其所有属性以返回包含 lea
的对象
当我键入 italy
时,我想遍历所有对象及其所有属性以返回包含 italy
的对象。
我知道有很多解决方案,但到目前为止,我只看到了一些您需要指定要匹配的属性的解决方案。
欢迎使用 ES6 和 lodash!
const arrayOfObject = [{
name: 'Paul',
country: 'Canada',
}, {
name: 'Lea',
country: 'Italy',
}, {
name: 'John',
country: 'Italy',
}, ];
filterByValue(arrayOfObject, 'lea') // => [{name: 'Lea',country: 'Italy'}]
filterByValue(arrayOfObject, 'ita') // => [{name: 'Lea',country: 'Italy'}, {name: 'John',country: 'Italy'}]
原文由 Léo Coco 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以对其进行过滤并仅搜索一次出现的搜索字符串。
使用方法:
Array#filter
,仅用于过滤带条件的数组,Object.keys
用于获取对象的所有属性名称,Array#some
用于迭代键并在找到时退出循环,String#toLowerCase
获得可比值,String#includes
用于检查两个字符串,如果一个包含另一个。