2016-06-20 4 views
0

밑줄 j를 사용하여 데이터를 가져 오는 작업이 할당되었습니다. 이에서밑줄 js는 배열에서 데이터를 검색합니다.

$scope.myData= { 
"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": "Nerkundram", 
        "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" 
       } 
      ] 
      } 
     ] 
    } 
} 

난 단지 "이름"필드를 원하는 :

이 내 JSON이다. 이렇게하면 :

$scope.bdata = _.pluck($scope.myTest.buslist.searchResult, 'boardingPointDetails'); 

나는 "boardingPointDetails"를 모두 얻었습니다. 결과는 다음과 같습니다.

   [ [ 
       { 
        "code": "2084", 
        "name": "Adyar", 
        "time": "09:30:00" 
       }, 
       { 
        "code": "961296", 
        "name": "Madurai", 
        "time": "09:45:00" 
       } 
      ],[ 
       { 
        "code": "1631", 
        "name": "Koyambedu", 
        "time": "09:30:00" 
       }, 
       { 
        "code": "961296", 
        "name": "Nerkundram", 
        "time": "09:45:00" 
       } 
      ],[ 
       { 
       ... 
       } 
       ] 
      ... 
      ] 

"name"만 검색하면됩니다.

+0

윌 배열은 무엇입니까? '[ 'Adyar', 'Nerkundram']'처럼? –

+0

예를 들어 for 루프를 사용하지 않고 예를 들어 밑줄 j 만 사용하고 결과에서 ng-repeat를 사용하여 해당 데이터를 나열하려고합니다. – keerthi

+0

답변을 게시했습니다. –

답변

2

[ 'Koyambedu', 'Madurai']와 같은 이름의 배열을 원할 경우 아래 코드가 작동합니다.

$scope.bdata = _.pluck($scope.myTest.buslist.searchResult, 'boardingPointDetails'); 

// Flatten the data. 
$scope.flatbdata = _.flatten($scope.bdata, true); 

$scope.flatbdata = $scope.flatbdata.filter(function(d){ 
         return d != undefined && d.hasOwnProperty('name') 
        }) 

// map calls a provided callback function once for each element in an array, in order, and constructs a new array from the results 

$scope.names = $scope.flatbdata.map(function(d){ 
        return d.name; 
       }); 

링크 아래를 참조하십시오

http://underscorejs.org/#flatten

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

+0

답장을 보내 주셔서 감사합니다. 귀하의 코드는 평평한면까지 작동합니다. 그런 다음지도에 표시되지 않습니다 .. – keerthi

+0

평평한 데이터에 정의되지 않은 부분이있을 수 있습니다. 따라서지도를 사용하기 전에 데이터를 필터링 할 수 있습니다. $ scope.flatbdata = $ scope.flatbdata.filter (function (d) { return d! = undefined && d.hasOwnProperty ('name') }); –

+0

.. 고맙습니다. 어제부터 시도해 봤습니다. 당신은 내 하루를 ... 완벽하게 작동합니다. – keerthi

0

그냥 이름의 배열을 원하는 경우에, 여기있다 :

$scope.bdata = _.pluck($scope.myTest.buslist.searchResult, 'boardingPointDetails'); 

var res= _.flatten($scope.bdata); 
res=_.pluck(res,'name'); 
console.log(res); 
+0

작동하지 않습니다 .. 답장을 보내 주셔서 감사합니다. – keerthi

+0

출력은 어떻게됩니까? 왜냐하면 나는 그것이 작동하고 있다고 확신하기 때문이다. 내게'' 'Koyambedu', 'Nerkundram', 'Adyar', 'Madurai'] ' –

0
var temp = _.pluck(_.flatten($scope.bdata),'name') 

임시 직원은 ["Koyambedu", "Nerkundram", "Adyar", "Madurai"]

+0

이 작동하지 않습니다. : – keerthi

+0

찾고있는 결과는 무엇입니까? –

+0

감사합니다. 귀하의 회신 .. 애닛 코드의 코드가 작동 ... – keerthi

0

입니다. 이름

$scope = {}; // in real project you don't need this. it's just for snippet. 
 
$scope.myData = { 
 
    "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": "Nerkundram", 
 
     "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" 
 
     }] 
 
    }] 
 
    } 
 
}; 
 
$scope.names = _.chain($scope.myData.buslist.searchResult).pluck("boardingPointDetails").flatten(true).map(function(item) { 
 
    return item.name; 
 
}).value(); 
 
console.log($scope.names);
<script src="http://underscorejs.ru/underscore-min.js"></script>

+0

하지만 $ 범위 내 배열을 가지고있어. var에 저장 하시겠습니까? – keerthi

+0

반환합니다 : 배열 : [정의되지 않음] .. – keerthi

+0

그것은 당신이 결과를 저장하십시오. –

관련 문제