我想在我的数组中搜索一个字符串。我的问题是我的数组非常大并且有许多嵌套数组。
看起来像这样:
[
{
"Id":null,
"Text":"Marketing",
"Gruppen":[
{
"Id":null,
"Text":"Werbeartikel",
"Gruppen":[
{
"Id":null,
"Text":"Werbegeschenk Hobby, Freizeit",
"Gruppen":[
{
"Id":"51004839",
"Text":"Taschenmesser (Werbeartikel)",
"Gruppen":null
},
{
"Id":"51004843",
"Text":"Schirm (Werbeartikel)",
"Gruppen":null
},
{
"Id":"51004845",
"Text":"Sportartikel (Werbeartikel)",
"Gruppen":null
}
]
}
]
}
]
}
]
现在我想搜索(Taschenmesser)。我只需要查找所有“文本”字段。
我不知道该怎么做。 我希望得到结果:,
{
"Id":"51004839",
"Text":"Taschenmesser (Werbeartikel)",
"Gruppen":null
}
这是我搜索的方法。但它不会搜索嵌套的嵌套嵌套数组:
$scope.SearchForGroup = function (pSearchText) {
var lGruppe = $filter('filter')($scope.WarenGruppenResponse.WarenGruppe, "Schirm")
};
这里是plunker演示问题http://plnkr.co/edit/l0cnZQPAh2HXLX1yTnLl?p=info
答案 0 :(得分:0)
由于您有嵌套列表,因此您可以在此处发布搜索算法:LINK
我会在输入上使用观察器并生成新数组:
$scope.search = '';
$scope.foundItems = [];
function searchTree(element, matchingTitle){
if(element.Text.indexOf(matchingTitle) > -1){
return element;
}else if (element.Gruppen != null){
var i;
var result = null;
for(i=0; result == null && i < element.Gruppen.length; i++){
result = searchTree(element.Gruppen[i], matchingTitle);
}
return result;
}
return null;
}
$scope.$watch(function () {
return $scope.search;
},
function (newVal, oldVal) {
$scope.foundItems = [];
if (newVal !== undefined && newVal !== oldVal && newVal !== '') {
var result = searchTree($scope.data[0], newVal);
console.log(result);
$scope.foundItems.push(result);
}
});