无法迭代 ES6 Map 对象

Cannot iterate ES6 Map object

我正在做一个简单的 React 项目。 我有这个 Map 对象 books,其中 book.id 作为键,book 对象作为值。所以我可以创建一个地图对象,但我不能使用 for... offorEach 迭代地图。

这是代码的一部分

const books = this.props.readingBooks;

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

当我使用代码时,总是出现这个错误:

我会把它写在一个答案中,因为我需要给你看一些代码,尽管我们还没有完全弄清楚你的代码有什么问题。

首先,您显示的错误意味着某些代码正在尝试迭代不可迭代的内容。如果您关于错误来自 for/of 循环的断言是正确的,那么它告诉您 books 不是可迭代对象,因此不是 Map 对象。

你可以通过这个简单的例子看到,如果 books 是一个合法的 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 对象,要么您的真实代码中发生了其他您未在此处向我们展示的事情。