2017-10-11 92 views
0

我有輸入是對象的一個​​這樣的數組:得到區分由lodash的對象的陣列的元件/下劃線

var input = [ 
      { 
       "id": 1, 
       "price": 100 
      }, 
      { 
       "id": 2, 
       "price": 3000 
      }, 
      { 
       "id": 4, 
       "price": 200 
      }, 
      { 
       "id": 8, 
       "price": 200 
      } 

     ] 

我想區分元件,以獲得輸出等:

var output = [ 
      { 
       "id": "1", 
       "price": 100 
      }, 
      { 
       "id": "2", 
       "price": 3000 
      }, 
      { 
       "id": "4_8", 
       "price": 200 
      } 

     ] 

by lodash。 我真的需要你的幫助,感謝你這麼多

+0

嗨,歡迎堆棧溢出。有關如何提出問題並更新您的問題的更多詳細信息,請參見[問問]鏈接 。 –

回答

0

在Lodash,你可以使用_.groupBy其次_.map

var input = [{"id":1,"price":100}, 
 
      {"id":2,"price":3000}, 
 
      {"id":4,"price":200}, 
 
      {"id":8,"price":200}]; 
 

 
var output = _(input) 
 
    .groupBy('price') 
 
    .map((vs, k) => ({ 
 
     id: _.map(vs, 'id').join('_'), 
 
     price: +k 
 
    })) 
 
    .value(); 
 
    
 
console.log(output);
.as-console-wrapper { min-height: 100% }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

+0

非常感謝你,它已經解決了 –

+0

你能幫我解決從輸出到輸入的反向問題嗎? @ 4castle,非常感謝 –

+0

@Blueskyy你可以在'_.flatMap'回調裏面的'id'字段使用'_.split'來做相反的操作。 (注意:這不是代碼編寫網站,問題需要顯示努力和具體問題) – 4castle