簡體   English   中英

AngularJS通過數組過濾復雜的JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM