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


#1

Добрый день. Может кто нибудь объяснить в чем разница между:
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;
};

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


#2

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


#3

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

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

#4

через reduce:

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

#5

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


#6

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


#7

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


#8

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


#9

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


#10

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


#11

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


#12

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