AngularJS/Javascript:在嵌套对象中查找字符串匹配
问题描述:
我有一个复杂的对象(用户对象),其中嵌套了数组和嵌套对象。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"
,因为这需要还解析复选框,并相应地返回值。
答
尝试
realSave = (JSON.stringify(item).indexOf($rootScope.filt.searchFilter.toLowerCase()) !== -1)
(这是一个长的线,滚动到右侧)
它将改变你的整个对象成一个字符串,那么你可以搜索你要找里面的任何地方的子串
答
您可以使用角度滤波这样的:
app.controller('MainCtrl', function($scope, $filter) {
$scope.a = [{name : 'pit'}, {name : {a : 'pit'}}, {name : { a : { b : 'pit'}}}];
$scope.find = $filter('filter')($scope.a, 'pit');
});
真的吗?我试图搜索如何将整个对象转换为字符串,并得到了很多无益的答案。谢谢! – Jascination
不用担心!如果它解决了您的问题,请不要忘记验证我的答案。 –
此方法中的特殊符号和搜索字段名称中的限制太多,而不是值。 –