gpt4 book ai didi

javascript - Lodash - 在嵌套对象中查找值

转载 作者:行者123 更新时间:2023-11-28 03:32:28 26 4
gpt4 key购买 nike

我有一个如下链接中提到的对象结构

https://jsonblob.com/3511b867-dd4b-11e9-85e4-63b804994c26

我想使用 lodash 在 persons 下的所有节点中搜索 firstname: Dianca

我不想对节点名称进行编码,因为这样我就提到了很多要查找的节点。我需要在 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"));

应该正是您所需要的。享受吧!!

关于javascript - Lodash - 在嵌套对象中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com