Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线对对象进行角度、深度搜索_Javascript_Angularjs_Underscore.js - Fatal编程技术网

Javascript 使用下划线对对象进行角度、深度搜索

Javascript 使用下划线对对象进行角度、深度搜索,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我正在尝试搜索一个对象来检查是否存在这样的验证 var selLess = $scope.accountTreeHere.map( function(obj){ return obj.selected; }); 因此,这很好,但是,实际上有一个更深层的层次,其中包含我想要合并到该变量中的项目。selected,当我需要它进入任何层次以查找selected的键时,该映射似乎只位于accountTreeHEre的第一层。用下划线可以吗?我是新来强调,所以我仍然不确定如何做到

我正在尝试搜索一个对象来检查是否存在这样的验证

var selLess = $scope.accountTreeHere.map( function(obj){
        return obj.selected;
    });
因此,这很好,但是,实际上有一个更深层的层次,其中包含我想要合并到该变量中的项目。selected,当我需要它进入任何层次以查找selected的键时,该映射似乎只位于accountTreeHEre的第一层。用下划线可以吗?我是新来强调,所以我仍然不确定如何做到这一点

我基本上希望映射整个对象,无论键有多深,都使用selected,并返回其值的数组

谢谢你的阅读

所以这里的会计树看起来像这样

[{name : name 1, selected: true, subs : [{selected : true, name : sub 1},{selected : false, name : sub 2}]},{name : name 2, selected: false, subs : [{selected : false, name : sub 1},{selected : false, name : sub 2}]}

因此,它只是在sub-here中有嵌套对象,例如,其中也有我要添加到此数组中的选定键。

您可以使用
.map
.flatte
的组合来执行此操作,而无需太多麻烦

var数据=[
{name:“name 1”,选中:true,子项:
[
{selected:true,name:“sub 1”},
{所选:false,名称:“sub 2”}
]},
{name:“name 2”,选中:false,子项:
[
{selected:false,名称:“sub 1”},
{所选:false,名称:“sub 2”}
]}
];
函数映射选择(数据){
返回映射(数据、函数(el){
返回[el.selected,映射选择(el.subs | |[])];
});
}
var selLess=u0.flant(映射选择(数据));
控制台日志(selLess);
document.write(JSON.stringify(selLess))

我不太清楚你在问什么。你能举个例子说明一下accountTreeHere
可能是什么样子吗?@AlexisKing当然!一秒钟。所以你希望结果只是一个所有元素的平面数组,选择了
:true
?只是一个元素的平面数组,选择了,所以真/假不重要,现在它只是一个类似['false',true',false]的数组,但它只是第一层向下,我也需要与第二层向下结合。这有意义吗?啊,我想我明白了,所以示例数据的正确输出应该是
[真,真,假,假,假,假]
?这很好,我的问题是这是否可能与undescore有关?@ajmajmajma是的,
.map
.flatte
都有下划线。嘿,只是好奇,你能解释一下返回[el.selected,mapSelections(el.subs | |[])];简单地分开?不管怎样,再次感谢@Ajmajma Sure,在帖子的末尾添加了一个解释。