Пытается преобразовать массив массивов (где внутренние массивы содержат только два значения) в объект.
Это то, что у меня есть до сих пор:
function fromListToObject(array) {
var obj = {};
for (i in array) {
obj[array[i[0]]] = array[i[1]];
};
return obj
};
A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));
Но это дает мне объект, где ключи являются парами массива, а значения "неопределены".
Halp?
С ES6 вы можете использовать
Object.assign
для нового объекта,...
для принятия массива в качестве параметров,Array#map
для возврата отдельных объектов в массив,
var array = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]],
object = Object.assign(...array.map(([k, v]) => ({ [k]: v })));
console.log(object);
Вы можете использовать Array.prototype.reduce()
следующим образом:
const array = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
const object = array.reduce((result, [key, value]) => {
result[key] = value;
return result;
}, {});
console.log(object);
Измените свой код на:
function fromListToObject(array) {
var obj = {};
for (i in array) {
obj[array[i][0]] = array[i][1];
};
return obj
};
A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));
При получении значения массива вы написали неправильный синтаксис.
Попробуй это:
function fromListToObject(array) {
return Object.assign.apply({}, array.map(function(subarray) {
var temp = {}
temp[subarray[0]] = subarray[1]
return temp
})
)
};
A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));
Он сглаживает все массивы в один большой объект с помощью этих пар ключ-значение:
{ make: 'Ford', model: 'Mustang', year: 1964 }
for...in
для перебора массива, они предназначены для объектов. Используйте нормальный для цикла.for (i = 0; i < array.length; i++)
- веб-документы MDN на эту тему.