#javascript
Вопрос:
Пытаюсь понять, почему расширенный цикл for не добавит пары ключевых значений к объекту. Я знаю, что могу сделать это с помощью обычного цикла for, но почему расширенный цикл for не работает? Это синтаксическая ошибка?
function transformArrayToObject(array) {
// your code here
var obj = {};
// Loop through array of arrays adding the first and last as key value pairs
for (var arrayOfArray in array) {
obj[[arrayOfArray][0]] = arrayOfArray[1];
}
return obj;
}
var input = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
var result = transformArrayToObject(input);
console.log(result);
Комментарии:
1.
of
Не используйтеin
. Вы тоже могли бы это сделатьarray.reduce((a, [k, v]) => {a[k] = v; return a}, {})
.2. Неважно, я вижу, что вы не можете использовать для массива, еще раз спасибо за помощь.
3. Извините, ошиблась ссылкой. for…in . для…из
4.
[arrayOfArray][0] === arrayOfArray
, так как это 0-й элемент массива [arrayOfArray]
Ответ №1:
В строке 7 вы, возможно, хотели написать obj[array[arrayOfArray][0]] = array[arrayOfArray][1];
вместо этого.
for x in y
даст вам индексы x из y.
Ответ №2:
В дополнение к тому, что это for of
скорее цикл, чем for in
цикл, в этой строке была ошибка:
obj[arrayOfArray[0]] = arrayOfArray[1];
Вы создавали новый массив в качестве нового ключа с помощью obj[[arrayOfArray[0]]] = arrayOfArray[1];
function transformArrayToObject(array) {
// your code here
var obj = {};
// Loop through array of arrays adding the first and last as key value pairs
for (var arrayOfArray of array) {
obj[arrayOfArray[0]] = arrayOfArray[1];
}
return obj;
}
var input = [
['make', 'Ford'],
['model', 'Mustang'],
['year', 1964]
];
var result = transformArrayToObject(input);
console.log(result);
Ответ №3:
Это то, чего вы пытаетесь достичь:
function transformArrayToObject(array) {
// your code here
var obj = {};
// Loop through array of arrays adding the first and last as key value pairs
for (var arrayOfArray in array) {
obj[array[arrayOfArray][0]] = array[arrayOfArray][1];
}
return obj;
}
var input = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
var result = transformArrayToObject(input);
console.log(result);
in
ключевое слово отличается в python и javascript. Javascript заставляет его предоставлять индекс. Вы можете сделать то же самое с of
ним , и он выглядит немного чище:
function transformArrayToObject(array) {
// your code here
var obj = {};
// Loop through array of arrays adding the first and last as key value pairs
for (var arrayOfArray of array) {
obj[arrayOfArray[0]] = arrayOfArray[1]
}
return obj;
}
var input = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
var result = transformArrayToObject(input);
console.log(result);