gpt4 book ai didi

javascript - Underscore.js findWhere 嵌套对象

转载 作者:可可西里 更新时间:2023-11-01 02:30:47 35 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 层深的文件夹。

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

我正在使用仅在顶层使用的下划线:

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

如何进行深度嵌套搜索。下划线有什么用吗?还是我需要用递归构建一个混合?

最佳答案

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

_.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/17578725/

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