Довольно просто.
Мне нужно создать функцию objOfMatches
, которая принимает два массива и обратный вызов.objOfMatches создаст объект и вернет его.Чтобы построить объект, objOfMatches
проверит каждый элемент первого массива, используя обратный вызов, чтобы увидеть, соответствует ли вывод соответствующему элементу (по индексу) второго массива.Если есть совпадение, элемент из первого массива становится ключом в объекте, а элемент из второго массива становится соответствующим значением.
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' }
Выглядит довольно просто, но я не до концаПонимание, почему он выдает ошибку TypeError в консоли.(TypeError: Cannot set property '0' of undefined)
Может кто-нибудь объяснить, что происходит?