2017-01-01 2 views
0

나는 lodash를 좋아하고 많은 프로젝트에서 사용합니다.lodash`value`를 사용하고 체인을 계속 사용하는 방법?

나는 항상이 문제가 있으며 해결 방법을 찾을 수 없습니다.

lodash를 사용하여 임시 상태를 저장하고 계속 진행하고 싶습니다. 예를 들어

내가 자신의 ID와 이익 영화의 목록 인 moviesList가 있다고 가정 할 수 있습니다, 나는 자신의 ID로

  • 인덱스 영화를 원하고 moviesById
  • 필터 수익성이 영화의 결과를 유지 결과를 overMillionProfit

으로 유지하십시오. 그러면 체인을 끊지 않고 수행하고 싶습니다. 뭔가 같은 (희망 사항) : 현재

var moviesList = [{id : 1}, {id:2}, ...]; 
    var moviesById = {}; 
    var overMillionProfit = []; 
    _(moviesList) 
     .keyBy('id') 
     .do((unwrappedValue)=> moviesById = unwrappedValue) 
     .values() 
     .filter((m) => m.profit > 1000000) 
     .do((unwrappedValue) => overMillionProfit = unwrappedValue) 

, 나는 그것이 필요한 체인과 같이 휴식을 찾을 수 있습니다 : 그것은 더 나은이 시나리오 아마도

var moviesList = [{id : 1}, {id:2}, ...]; 
    var moviesById = _.keyBy(moviesList,'id'); 
    var overMillionProfit = _.filter(moviesList, ...); 

,하지만 난 할 수 있도록하려면 어떤 경우에는 위와 같이하십시오.

이 방법이 있습니까?

답변

3

당신은 그것을 위해 _.tap()를 사용할 수 있습니다

var moviesList = [{id : 1}, {id:2}, {id:3}]; 
 
    var moviesById; 
 
    var overMillionProfit; 
 
    var result = _(moviesList) 
 
     .keyBy('id') 
 
     .tap((unwrappedValue)=> moviesById = unwrappedValue) 
 
     .values() 
 
     .filter((m) => m.id > 1) 
 
     .tap((unwrappedValue) => overMillionProfit = unwrappedValue) 
 
     .value(); 
 

 
console.log('moviesById\n', moviesById); 
 
console.log('overMillionProfit\n', overMillionProfit); 
 
console.log('result\n', result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>