簡體   English   中英

使用 Lodash 將 object 鍵轉換為具有鍵值的數組

[英]Convert object key to array with values number of key with Lodash

我有一個帶有產品的 object:

products: {
  bread: 1,
  milk: 2,
  cheese: 2,
  chicken: 1,
}

我想要一個帶有這樣產品名稱的數組:

products: ['bread', 'milk', 'milk', 'cheese', 'cheese', 'chicken']

我試圖將lodashreduce方法一起使用,但我不知道如何在數組中“乘”這個產品。

我認為這不是一個好主意:

_.reduce(products, (result, value, key) => {
  for(let i = 0; i < value; i++) {
   result.push(key);
  }
  return result;
}, [])

因此,如果有人可以提供幫助,我將不勝感激。

您可以在 object 的條目上使用flatMap

 const products = { bread: 1, milk: 2, cheese: 2, chicken: 1, } const output = Object.entries(products).flatMap(([k, v]) => Array(v).fill(k)) console.log(output)

使用 lodash,您可以使用_.flatMap()迭代數組。 使用_.overArgs()創建回調,它將值(通過_.identity() )和密鑰(用_.constant()包裝)傳遞給_.times()

 const obj = { products: { bread: 1, milk: 2, cheese: 2, chicken: 1, } } const result = _.flatMap(obj.products, _.overArgs(_.times, [_.identity, _.constant])) console.log(result)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM