gpt4 book ai didi

javascript - Underscore.js findWhere 嵌套对象

转载 作者:行者123 更新时间:2023-12-02 17:28:37 25 4
gpt4 key购买 nike

我有一个文件夹/文件对象,如下所示:

{
about.html : {
path : './about.html'
},
about2.html : {
path : './about2.html'
},
about3.html : {
path : './about3.html'
},
folderName : {
path : './folderName',
children : {
sub-child.html : {
path : 'folderName/sub-child.html'
}
}
}
}

它可以深入包含子文件夹的 6-7 层。

我想找到 path 等于我提供的字符串的对象。不管有多深。

我使用的下划线仅执行顶层操作:

_.findWhere(files,{path:'./about2.html'}

如何进行深度嵌套搜索。 underscore 是否有相关功能,或者我是否需要构建一个具有递归功能的 mixin?

最佳答案

这不是最漂亮的代码,但我对其进行了测试,它似乎按照您要求的方式工作。它被设置为 lodash/下划线混合,但可以使用。用法如下:

_.findDeep(testItem, { 'path': 'folderName/sub-child.html' })

实现:

findDeep: function(items, attrs) {

function match(value) {
for (var key in attrs) {
if(!_.isUndefined(value)) {
if (attrs[key] !== value[key]) {
return false;
}
}
}

return true;
}

function traverse(value) {
var result;

_.forEach(value, function (val) {
if (match(val)) {
result = val;
return false;
}

if (_.isObject(val) || _.isArray(val)) {
result = traverse(val);
}

if (result) {
return false;
}
});

return result;
}

return traverse(items);

}

关于javascript - Underscore.js findWhere 嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623896/

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