2017-05-24 6 views
-2

다음과 같은 배열이 있습니다. 나는 출발과 도착 필드 안의 어떤 값을 알고 싶다.자바 스크립트 컬렉션은 Lodash로 값을 찾습니다.

배열 :

[ "AYT", "IST", "ESB", "ADB"]

는 어떻게 처리 할 수 ​​

:이 같은 새로운 배열에 원하는

var data = { 
    "origin": "Antalya", 
    "destination": "IST", 

    "flights": [{ 
     "provider": "thy", 
     "time": "2017-07-07 10:30", 
     "legs": [{ 
      "departure": "AYT", 
      "arrival": "IST" 
     }] 
    },{ 
     "provider": "thy", 
     "time": "2017-07-07 14:30", 
     "legs": [{ 
      "departure": "AYT", 
      "arrival": "ESB" 
     },{ 
      "departure": "ESB", 
      "arrival": "IST" 
     }] 
    },{ 
     "provider": "pegasus", 
     "time": "2017-07-07 06:30", 
     "legs": [{ 
      "departure": "AYT", 
      "arrival": "ADB" 
     },{ 
      "departure": "ADB", 
      "arrival": "IST" 
     }] 
    }] 
}; 

로다시를 사용하고 있습니까?

답변

2

가 여기에 솔루션을 사용하여 lodash입니다 먼저 다리의 평평한 배열을 가져 와서 각 다리의 속성 값의 평평한 배열로 변환 한 다음 마지막으로 고유 한 값.

+0

배열의 각 요소를 조작자 함수로 전달하려는 경우 일반적으로 flatmap을 사용합니다.이 경우에는 필요하지 않습니다. 여기서 flatten을 사용해야합니다. 위의 대답을 참조하십시오. – FrankCamara

+0

비행 배열에서 다리를 뽑을 때 'flatMap'이 필요합니다. flatten은이 경우'data.flights'가 될 하나의 매개 변수를 취하기 때문에 flatten을 사용하는 솔루션은 작동하지 않습니다. 두 번째 매개 변수로 flatMap에 전달 된 '다리'는 무시됩니다. –

+0

정말 고마워요, 훌륭합니다 –

2

음 데이터를 통해 루프와 문자열 배열을 만든 다음처럼 UNIQ 기능을 사용

let result = _(data.flights) 
    .flatMap('legs') 
    .flatMap(_.values) 
    .uniq() 
    .value(); 

:

var data = {"origin":"Antalya","destination":"IST","flights":[{"provider":"thy","time":"2017-07-07 10:30","legs":[{"departure":"AYT","arrival":"IST"}]},{"provider":"thy","time":"2017-07-07 14:30","legs":[{"departure":"AYT","arrival":"ESB"},{"departure":"ESB","arrival":"IST"}]},{"provider":"pegasus","time":"2017-07-07 06:30","legs":[{"departure":"AYT","arrival":"ADB"},{"departure":"ADB","arrival":"IST"}]}]}; 
 

 
var legs = []; 
 
_.each(data.flights, flight => { 
 
    _.each(flight.legs, leg => { 
 
    legs.push(leg.departure); 
 
    legs.push(leg.arrival); 
 
    }); 
 
}); 
 

 
console.log(_.uniq(legs));
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>

+0

답변 해 주셔서 감사합니다. 그러나 로다시 방법이 더 짧은 방법이 있습니까? :) –

+0

납작하게 사용하는 솔루션이 작동하지 않습니다. 아래 내 의견을 참조하십시오. –

+0

아니, 나는 jsFiddle : S https://jsfiddle.net/hk1key5v/에서 잘못된 로다시 버전을 사용하고 있다는 것을 깨달았습니다. – FrankCamara

관련 문제