Saya memiliki JSON sederhana dengan array yang berisi objek lebih lanjut, dll. Seperti ini:
languagePack:
[
{
'key': 'Username',
'value': 'Benutzername',
'group': 'default'
},
{
'key': 'Password',
'value': 'Passwort',
'group': 'default'
}
]
Tapi yang benar-benar saya inginkan adalah objek seperti ini:
languagePack:
{
'Username': 'Benutzername',
'Password': 'Passwort'
}
Jadi, saya ingin mengurangi array menjadi pasangan kunci-nilai-sederhana yang ada di dalam array atau bahkan objek (kunci unik). Apakah ada yang punya ide bagaimana mengurangi ini dengan beberapa fungsi array keren ini? Saya hanya datang dengan sesuatu seperti untuk masing-masing dan membangun objek "dengan tangan" properti untuk properti, tapi saya ingat ada beberapa hal keren untuk array seperti 'mengurangi', operator spread (...), peta, setiap, beberapa, dll.
Saya mencobanya dengan sesuatu seperti:
var temp = this.languagePack.map(([key, value]) => ({key,value}))
console.log(temp)
Tapi itu hanya membuat saya pesan kesalahan TypeError: Invalid attempt to destructure non-iterable instance
Sunting: Ketiga jawaban bekerja dengan sangat baik. Terima kasih.
sumber
group
harus diabaikan?Jawaban:
Pada dasarnya Anda perlu menggunakan
forEach
alih-alihmap
fungsi dan kemudian Anda bisa membangun objek itu untuk kunci apa pun, pasangan nilai yang ingin Anda pertahankan.Coba ini, itu akan menyelesaikan masalah Anda.
Catatan: Di sini kita tidak menggunakan
map
karena kita ingin mengembalikan objek bukan array, jadi, kita dapat menggunakanreduce
fungsi di sini untuk melakukannya, tapi saya pikir ini akan sederhana dan mudah untuk memahami apa yang kita inginkan dan apa yang kita lakukan di sini.sumber
Anda dapat menggunakan
reduce
fungsi javascript untuk membuat objek kosong dan memasukkan setiap kunci dan nilai di dalamnya.Sunting: Saran bagus dari Donny Verduijn . Anda dapat menggunakan es6 destructure untuk menulis fungsi lebih pendek.
sumber
(acc, { key, value }) => ({ ...acc, [key]: value })
const newData = data.reduce((acc, row) => (acc[row.key] = row.value, acc), {});
digunakan dengan
Array#map
itu membuat kunci dan nilai sebagai objek danObject.assign
nilai array yang terselubung ke objeksumber
Anda dapat menggunakan ES6
Map
untuk menggunakannyaObject.fromEntries
untuk mengkonversimap
kembaliObject
.Untuk informasi lebih lanjut tentang Peta
sumber