[英]Lodash - find value in nested Objects
我有一个 object 结构,如下面的链接中所述
https://jsonblob.com/3511b867-dd4b-11e9-85e4-63b804994c26
我想在使用 lodash 的persons
下的所有节点中搜索 say firstname: Dianca
Dianca。
我不想对节点名称进行硬编码,因为我提到了很多要查找的节点。 无论它位于 Object 结构下的哪个位置,我都需要在person
节点下动态搜索它。
我尝试了如下方法,但徒劳无功(比如硬编码的东西)
_.filter(users, o =>
_.some(o.Positions, ['persons.firstname', 'Dianca'])
)
其次,我想获取persons
节点下的所有名称并将其保存到新数组中。
任何援助将不胜感激。
这是什么问题:! 我花了一年的时间为你建立一个逻辑:)
function findUser(data, firstName) {
var object;
data.some(function f(a) {
if (a.firstname == firstName) {
object = a;
return true;
}
_.each(Object.keys(a), function (value, key) {
// loops through json objects in waypath
if (!_.isEmpty(object)) {
return false; // stop once we get the user
}
if (isNaN(value)) {
// only data with string keys need to iterate more
// when there is an array with elements
if (Array.isArray(a[value]) && a[value].length != 0) {
a[value].some(f); // recursion (Didn't use return because we are in loop)
} else if (!_.isEmpty(a[value])) {
// when there is an object within object
_.each(Object.keys(a[value]), function (val, key2) {
if (Array.isArray(a[value][val]) && a[value][val].length != 0) {
a[value][val].some(f); // recursion
}
});
}
}
});
});
return object;
}
console.log(findUser(data, "Phyllis"));
应该正是你所需要的。 享受 !!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.