Saya perlu mengonversi array objek menjadi objek objek dalam JavaScript. ID buku harus berupa ID setiap objek dari larik.

Array yang saya miliki:

[{
   "author" : "cccc",
   "catid" : 22,
   "id" : 25,
   "logo" : "logo",
   "name" : "Book c",
   "size" : 84777
 }, {
   "author" : "ddd",
   "catid" : 22,
   "id" : 26,
   "logo" : "logo",
   "name" : "Book d",
   "size" : 105139
 }]

Objek yang saya butuhkan:

 {
 "25":{
   "author" : "bbbb",
   "catid" : 22,
   "logo" : "logo",
   "name" : "Book b",
   "size" : 73386
 }, 
 "26":{
   "author" : "cccc",
   "catid" : 22,
   "logo" : "logo",
   "name" : "Book c",
   "size" : 84777
 }}
-2
Kh.Nomani 28 Mei 2019, 16:29

1 menjawab

Masalah dengan pendekatan yang diberikan di atas adalah terbatas pada objek di mana kunci objek baru akan menjadi id. Mari abstrak ini sehingga fungsinya dapat digunakan kembali di semua situasi!

Seperti yang dinyatakan di atas dalam kueri Anda, Anda ingin mengonversi JSON Array yang disebut BookArray menjadi Objek JSON yang disebut BookObject sebagai berikut.

const bookArray = [{
   "author" : "cccc",
   "catid" : 22,
   "id" : 25,
   "logo" : "logo",
   "name" : "Book c",
   "size" : 84777
 }, {
   "author" : "ddd",
   "catid" : 22,
   "id" : 26,
   "logo" : "logo",
   "name" : "Book d",
   "size" : 105139
 }]

Your resulting bookObject after processing should look like this.
const bookObject = {
 "25":{
   "author" : "bbbb",
   "catid" : 22,
   "logo" : "logo",
   "name" : "Book b",
   "size" : 73386
 }, 
 "26":{
   "author" : "cccc",
   "catid" : 22,
   "logo" : "logo",
   "name" : "Book c",
   "size" : 84777
 }}

const arrayToObject = (array, keyField) =>
   array.reduce((obj, item) => {
     obj[item[keyField]] = item
     return obj
   }, {})

const bookObject = arrayToObject(bookArray, "id")
console.log(bookObject[idToSelect])

Kode di atas sekarang menerima keyField yang memungkinkan kita menggunakan fungsi ini untuk mengonversi array objek apa pun. Bukan hanya mereka yang memiliki field id. Ini penting untuk dapat digunakan kembali kode kita.

-1
Srikanth J 28 Mei 2019, 14:04