如果需要搜索嵌套对象,可以使用 Lodash 的.find()
函数。它需要三个参数:
collection
: 可以是数组或对象。predicate
: Lodash 对数组中每个元素调用的回调函数。fromIndex
:要搜索的索引。默认为 0。
Lodash 将返回第一个predicate
返回真值的元素,或者undefined
如果没有这样的元素。您可以编写一个predicate
检查元素是否具有某个嵌套属性的方法。以下代码按name.first
属性查找对象。
const _ = require('lodash');
const obj = [
{
name: {
first: 'Test',
last: 'Testerson'
},
age: 2,
location: 'Florida'
},
{
name: {
first: 'Obi-wan',
last: 'Kenobi'
},
age: 45,
location: 'Tatooine'
},
{
name: {
first: 'Masteringjs',
last: '.io'
},
age: 5,
location: 'Florida'
}
];
let result = _.find(obj, el => el.name.first === 'Test');
result; // { name: { first: 'Test', last: 'Testerson', age: 2 }, location: 'Florida' }
result = _.find(obj, el => el.name.first === 'something else');
result; // undefined
为避免出现el.name
isnull
或的情况undefined
,您可以使用可选链?.
或Lodash 的get()
函数。
let result = _.find(obj, el => el?.name?.first === 'Test');
// Equivalent:
result = _.find(obj, el => _.get(el, 'name.first') === 'Test');