我有一個這樣的物件:
let order={
"john":{
"hamburger":4
},
"alice":{
"pizza":10,
"milkshake":2
},
"bob":{
}
}
我想像這樣展平:
let res=[
["john","hamburger",4],
["alice","pizza",4],
["alice","milkshake",4]
]
我知道如何使用 keyBy 進行反向操作,但是如何將其從遞回物件轉換為遞回陣列?我嘗試使用 toPairs,但我不知道如何使其遞回
uj5u.com熱心網友回復:
使用_.toPairs()獲得的陣列[name, items]對,你用迭代_.flatMap()。從items物件中獲取對,并用于_.map()創建包含資訊的陣列:
const { flatMap, toPairs, map } = _
const order = {"john":{"hamburger":4},"alice":{"pizza":10,"milkshake":2},"bob":{}}
const result = flatMap(
toPairs(order),
([name, items]) =>
map(
toPairs(items),
([product, price]) => [name, product, price]
)
)
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG ljU96qKRCWh quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
在 vanilla JS 中,您可以使用Array.flatMap()withObject.entries()來獲得相同的結果:
const order = {"john":{"hamburger":4},"alice":{"pizza":10,"milkshake":2},"bob":{}}
const result = Object
.entries(order)
.flatMap(([name, items]) =>
Object.entries(items)
.map(([product, price]) => [name, product, price])
)
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315793.html
標籤:节点.js 目的 洛达什 javascript对象
上一篇:僅從物件陣列中回傳值
下一篇:使用特定鍵的值對物件陣列進行排序
