繁体   English   中英

Lodash - 在嵌套对象中查找值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM