問題

有沒有一種聰明的方法來獲取具有相同價值的所有物件?

 [
  { name: 'a' , value: '123'},
  { name: 'b' , value: '123'},
  { name: 'c' , value: '1234'},
  { name: 'd' , value: '1234'},
  { name: 'e' , value: '12345'},
  { name: 'f' , value: '123456'}
]
 

理想的結果是:

 [
  { name: 'a' , value: '123'},
  { name: 'b' , value: '123'},
  { name: 'c' , value: '1234'},
  { name: 'd' , value: '1234'}
]
 

我想計算所有值的發生,但這似乎不是一個好方法.

欣賞!

  最佳答案

您可以使用 Map 並根據地圖的值過濾陣列。

 var array = [{ name: 'a' , value: '123' }, { name: 'b' , value: '123' }, { name: 'c' , value: '1234' }, { name: 'd' , value: '1234' }, { name: 'e' , value: '12345' }, { name: 'f' , value: '123456' }],
    counts = array.reduce((m, { value }) => m.set(value, m.has(value)), new Map),
    result = array.filter(({ value }) => counts.get(value));

console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

  相同標籤的其他問題

javascriptecmascript-6ecmascript-7