2016-06-09 49 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

相關問題