Object to Array
จากคำตอบทั้งหมดฉันคิดว่าอันนี้ดีที่สุด:
let arr = Object.entries(obj).map(([key, val]) => ({ key, ...val }))
ที่เปลี่ยน:
{
a: { p: 1, q: 2},
b: { p: 3, q: 4}
}
ถึง:
[
{ key: 'a', p: 1, q: 2 },
{ key: 'b', p: 3, q: 4 }
]
Array to Object
ในการเปลี่ยนกลับ:
let obj = arr.reduce((obj, { key, ...val }) => { obj[key] = { ...val }; return obj; }, {})
ในการแปลงกลับโดยรักษาคีย์ไว้ในค่า:
let obj = arr.reduce((obj, { key, ...val }) => { obj[key] = { key, ...val }; return obj; }, {})
จะให้:
{
a: { key: 'a', p: 1, q: 2 },
b: { key: 'b', p: 3, q: 4 }
}
ตัวอย่างสุดท้ายที่คุณยังสามารถใช้ lodash หรือ_.keyBy(arr, 'key')
_.keyBy(arr, i => i.key)