Saya sudah memiliki objek penyihir memiliki dua array:

const services = {
        iconAndLink: [
            'Icon1',
            'Icon2',
            'Icon3',
        ],
        name: [
            'Name1',
            'Name2',
            'Name3',
        ],
    };

Saya melihat ke Object.assign(), array.reduce(), map dll... dan sepertinya tidak dapat menemukan jawaban yang layak di sini yang menggabungkan keduanya.

Untuk hasil akhir yang saya butuhkan:

services = [
        {
            icon: 'Icon1',
            name: 'Name1'
        },
        {
            icon: 'Icon2',
            name: 'Name2'
        },
        {
            icon: 'Icon3',
            name: 'Name3'
        },
    ]

Perhatikan bahwa saya harus memiliki kunci icon dan name.

Apakah ini mungkin di js?

3
HenrijsS 28 Mei 2021, 23:10

4 jawaban

Jawaban Terbaik

Ini harus bekerja

const services = {
  iconAndLink: ["Icon1", "Icon2", "Icon3"],
  name: ["Name1", "Name2", "Name3"],
};

let result = services.iconAndLink.map(function (icon, index) {
  return { icon: services.iconAndLink[index], name: services.name[index] };
});


console.log(result);

Pastikan kedua array sama panjangnya dan keduanya dipesan

3
Daniel Ramos 28 Mei 2021, 20:16

Dengan asumsi array memiliki ukuran yang sama, Anda dapat melakukan:

const services = { iconAndLink: [ 'Icon1', 'Icon2', 'Icon3', ], name: [ 'Name1', 'Name2', 'Name3', ], };
const newArr = [];

for (let i = 0; i < services.iconAndLink.length; i++) {
    newArr.push({icon: services.iconAndLink[i], name: services.name[i]})
}

console.log(newArr)
1
Most Needed Rabbit 28 Mei 2021, 20:36
const services={iconAndLink:["Icon1","Icon2","Icon3"],name:["Name1","Name2","Name3"]};
    
const res = services.name.map((e, i) => ({
  icon: e,
  name: services.iconAndLink[i]
}))

console.log(res)
1
ulou 28 Mei 2021, 20:17

Perulangan forEach sederhana menggunakan index akan berhasil

const services = {
  iconAndLink: [
    'Icon1',
    'Icon2',
    'Icon3',
  ],
  name: [
    'Name1',
    'Name2',
    'Name3',
  ],
};

let newarray = [];
services.iconAndLink.forEach((el, index) => newarray.push({
      icon: el,
      name: services.name[index]
    })
    );

    console.log(newarray)
1
Kinglish 28 Mei 2021, 20:14