2016-06-09 55 views
0

我有一个复杂的对象(用户对象),其中嵌套了数组和嵌套对象。AngularJS/Javascript:在嵌套对象中查找字符串匹配

我有一个相对复杂的搜索过滤器(复选框决定返回哪些项目以及搜索输入)。

目前我的目标搜索就像这样:

for(var key in item){ 
    if(item[key] && item[key].length && String(item[key]).toLowerCase().indexOf($rootScope.filt.searchFilter.toLowerCase()) !== -1){ 
    realSave = true; 
    } 
} 

不过,这只适用于项目内的物体的第一层;我还需要在对象内搜索对象。

我该怎么做?这是比上述更简单的方法吗? (请注意,我不能只用ng-repeat="item in items | searchFilter",因为这需要还解析复选框,并相应地返回值。

回答

1

尝试

realSave = (JSON.stringify(item).indexOf($rootScope.filt.searchFilter.toLowerCase()) !== -1) 

(这是一个长的线,滚动到右侧)

它将改变你的整个对象成一个字符串,那么你可以搜索你要找里面的任何地方的子串

+0

真的吗?我试图搜索如何将整个对象转换为字符串,并得到了很多无益的答案。谢谢! – Jascination

+0

不用担心!如果它解决了您的问题,请不要忘记验证我的答案。 –

+0

此方法中的特殊符号和搜索字段名称中的限制太多,而不是值。 –

0

您可以使用角度滤波这样的:

app.controller('MainCtrl', function($scope, $filter) { 
    $scope.a = [{name : 'pit'}, {name : {a : 'pit'}}, {name : { a : { b : 'pit'}}}]; 
    $scope.find = $filter('filter')($scope.a, 'pit'); 
}); 

http://plnkr.co/edit/TenLILkXJ0zwqMVtAj35?p=preview