Cukup mudah.
Saya perlu membuat fungsi objOfMatches
yang menerima dua array dan panggilan balik. objOfMatches akan membuat objek dan mengembalikannya. Untuk membangun objek, objOfMatches
akan menguji setiap elemen larik pertama menggunakan panggilan balik untuk melihat apakah keluarannya cocok dengan elemen terkait (menurut indeks) larik kedua. Jika ada kecocokan, elemen dari array pertama menjadi kunci dalam suatu objek, dan elemen dari array kedua menjadi nilai yang sesuai.
function objOfMatches(array1, array2, callback) {
//create obj
var obj = {}
//loop thru first array
for(let i = 0; i < array1.length; i++) {
for (let j = 0; j < array2.length; j++) {
if (callback(array1[i]) === array2[j]) {
obj.array1[i] = array2[j];
}
}
}
return obj;
}
console.log(objOfMatches(['hi', 'howdy', 'bye', 'later', 'hello'], ['HI', 'Howdy', 'BYE', 'LATER', 'hello'], function(str) { return str.toUpperCase(); }));
// should log: { hi: 'HI', bye: 'BYE', later: 'LATER' }
Kelihatannya cukup sederhana, namun saya tidak sepenuhnya memahami mengapa ia memunculkan TypeError di konsol. (TypeError: Cannot set property '0' of undefined)
Bisakah seseorang menjelaskan apa yang terjadi?
obj[array1[i]] = array2[j];
. - person Ori Drori   schedule 13.09.2018obj.array1[i] = array2[j]
; tidak terlihat seperti kesalahan sintaksis. Saya jelas-jelas salah. - person leonardofed   schedule 13.09.2018obj.array1[i] = array2[j]
-›set indeks i dari array properti obj ke suatu nilai, dan tidak mengatur kunci dengan nama teks yang ada di indeks i dalam array. - person Ori Drori   schedule 13.09.2018'hello'
bukan bagian dari hasil yang Anda harapkan? - person connexo   schedule 14.09.2018howdy
juga tidak ada di dalamnya? Ini sama sekali tidak cukup mudah. - person connexo   schedule 14.09.2018