Мне нужно преобразовать массив или массив массивов в объект с ключами, названными из массива имен. Пример:преобразовать массив в объект с помощью lodash
//given names
names = ['first', 'second', 'third', 'fourth']
//array
param = [1, 2, 3, 4]
//becomes
result = {first: 1, second: 2, third: 3, fourth: 4}
//array of arrays
param = [
[1, 2, 3, 4],
[-4, 3, 1, 32],
]
//becomes
result = [
{first: 1, second: 2, third: 3, fourth: 4},
{first: -4, second: 3, third: 1, fourth: 32},
]
Мое текущее решение заключается в следующем:
var names = ['first', 'second', 'third', 'forth'];
function arrayToObject(array, names) {
var result = {};
for (var i = 0; i < array.length; i++) {
if (typeof array[i] === 'object') {
result[i] = arrayToObject(array[i], names);
continue;
}
result[names[i]] = array[i];
}
return result;
}
Проблема с этим решением является то, что она всегда возвращает объект, хотя он должен возвращать массив объектов, когда я прохожу в массиве массивы. Есть ли способ сделать это с lodash, и я не вижу его?
вы несовпадение копии и результата. копия не объявлена. –
Исправлено, забыл переименовать его – Klemensas
, тогда все в порядке. вы объявляете результат как объект. write if statement: result = [] if array, result = {} if hash –