[英]Angularjs filter complex JSON by array
我有一個帶有multiselect選項的下拉列表。 我想從基於該數組的復雜JSON過濾掉數據。
選定的選項形成一個數據數組,例如:
$scope.myval=["Adyar","Paris","central"];
我的JSON:
$scope.myTest={
"buslist":
{
"code":"1",
"message":"Success",
"fromStationCode":"71",
"searchResult":[ {
"arrivalTime":"17:00:00",
"availableSeats":"42",
"boardingPointDetails":[{
"code":"1631",
"name":"Koyambedu",
"time":"09:30:00"
},
{
"code":"961296",
"name":"Paris",
"time":"09:45:00"
}
]
]
},
{
"arrivalTime":"18:00:00",
"availableSeats":"32",
"boardingPointDetails":[{
"code":"2084",
"name":"Adyar",
"time":"09:30:00"
},
{
"code":"961296",
"name":"Madurai",
"time":"09:45:00"
}
]
]
}
}
...
};
我的HTML模板是:
<tbody ng-repeat=" i in myTest.buslist.searchResult" >
<tr>
<td>{{i.arrivalTime}}</td>
<td>{{i.availableSeats}}</td>
<td>
<p ng-repeat="m in i.boardingPointDetails">{{m.name}}</p>
</td>
</tr>
</tbody>
我想根據選定的值過濾數據。 我嘗試過這樣的事情:
$scope.matched = $scope.myTest.buslist.searchResult.boardingPointDetails.name.indexOf(data);
ie:selected選項必須與“ boardingPointDetails”中的“名稱”字段匹配,但失敗。 提前致謝。
由於$scope.myTest.buslist.searchResult.boardingPointDetails
是一個數組,因此$scope.myTest.buslist.searchResult.boardingPointDetails.name
無效。
您需要使用Array函數以獲得正確的結果:
$scope.matched = $scope.myTest.buslist.searchResult.boardingPointDetails.filter(function(el) {
return el.name === data;
}).length > 0;
編輯:
根據您的評論,我了解您希望獲得與data
選項之一具有相同name
屬性的boardPointDetails
。 其中data
是字符串數組。
這將完成工作:
$scope.matched = $scope.myTest.buslist.searchResult.boardingPointDetails.filter(function(el) {
return data.indexOf(el.name) === 1;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.