Сжатие массивов 3/5

Добрый день. Может кто нибудь объяснить в чем разница между:
1.

Сводка

const getZippedArrays = (keysArray, valueArray) => {
let obj = {};
for (let i = 0; i < keysArray.length; i++)
obj[keysArray[i]] = valueArray[i];
return obj;
}

и

Сводка

var getZippedArrays = function(key, value){
var obj = {};

for(var i = 0; i <= key.length; i++){
obj[key[i]] = value[i];
}
console.log(obj);
return obj;
};

В первом варианте все ок, второй вариант не проходит. Причем оба варианта выдают один и тот же результат. Понятно что я что-то не втыкаю, но что именно?

они не выдают один и тот же результат, второй код дописывает еще свойство
undefined: undefined.
в цикле нужно перебирать до длины массива, а не до включительно

На скорую руку))

через forEach
const getZippedArrays = function(arrKeys, arrValue) {
  const obj = {};
  arrKeys.forEach((item, index) => obj[item] = arrValue[index]);
  return obj;
}
2 лайка

через reduce:

Сводка
const getZippedArrays = (keysArr, valuesArr) => {
  return keysArr.reduce((acc, el, index) => {
    acc[el] = valuesArr[index];
    return acc;
  }, {});
};

зачем вы каждый раз добавляете return ? там же одна строка в самой функции

в редакторе неудобно так писать, да и привык я так, на работе такой код стайл
…это уже оформление самого кода

хрень какая то, стрелочные функции добавили, чтобы минимизировать код, а вы наоборот стремитесь к function declaration обратно

на вкус и цвет товарищей нет,

вот в 4м задании как раз таки можно в одну строку написать…а в остальных, если у вас поместилось - хорошо, у меня же нет, и я записал так

вроде простое решение, если кому поможет
var getZippedArrays = function (name, name2){
var hash = {};
for (var i = 0; i < name.length; i++){
hash[name[i]] = name2[i];
}
return hash
}

1 лайк

arrKeys.forEach((item, index) => obj[item] = arrValue[index]);
как читается эта запись?

var getZippedArrays = function (keysArray, meaningArray) {
var obj = {};
for (var i = 0; i < keysArray.length; i++) {
obj[keysArray[i]] = meaningArray[i];
}
return obj;
}

Версия:
function getZippedArrays(keysArray, valueArray) {
const obj = {};
keysArray.forEach((el, i) => {
obj[el]=valueArray[i];
});
return obj;
};

Не уверен что правильно использовал стрелочную функцию, в смысле оно то работает, но был ли смысл через неё делать, хз…

Спойлеры!
let getZippedArrays = (arrKey, arrValue) => {
 let obg = {};
 for (let i = 0; i < arrKey.length; i++) {
   obg[arrKey[i]] = arrValue[i]
 }
 return obg
}

Мой вариант:
const getZippedArrays = (key,value) =>key.reduce((obj,a,i)=>(obj[a]=value[i],obj),{})