Невозможно выполнить итерацию объекта карты ES6 - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю над простым проектом React. У меня есть объект Map books с book.id в качестве ключей и book book в качестве значений. Таким образом, я могу создать объект карты, но я не могу перебрать карту, используя for... of или forEach.

Это часть кода

const books = this.props.readingBooks;

let KEYS = [];
let VALUES = [];
for (const book of books) {
    let [key, value] = book;
    KEYS.push(key);
    VALUES.push(value);
}

Когда я использую код, у меня всегда появляется эта ошибка:

enter image description here

1 Ответ

0 голосов
/ 04 апреля 2020

Я напишу это в ответе, потому что мне нужно показать вам некоторый код, хотя мы еще не совсем выяснили, что не так с вашим кодом.

Во-первых, отображаемая ошибка означает, что некоторый код пытается повторить что-то, что не является итерируемым. Если ваше утверждение верно, что ошибка происходит от for/of l oop, то это говорит о том, что books не является итерируемым, следовательно, не объектом Map.

Вы можете видеть это Простой пример: если books является объектом git Map, то ваш код работает нормально. Вы можете запустить его прямо здесь, в этом фрагменте, и увидеть, что он работает, если books является правильным Map объектом.

const books = new Map([["key1", "val1"], ["key2", "val2"]]);

let KEYS = [];
let VALUES = [];
for (const book of books) {
    let [key, value] = book;
    KEYS.push(key);
    VALUES.push(value);
}

console.log(KEYS);
console.log(VALUES);

Итак, либо books не является правильным Map объектом, как вы думаете, либо в вашем реальном коде происходит что-то еще, что вы не показывать нам здесь.

...