我正在做一个简单的React项目。
我有这个Map对象books
,其中book.id为键,book对象为值。因此,我可以创建一个Map对象,但不能使用for... of
或forEach
来迭代Map。
这是代码的一部分
const books = this.props.readingBooks;
let KEYS = [];
let VALUES = [];
for (const book of books) {
let [key, value] = book;
KEYS.push(key);
VALUES.push(value);
}
当我用完代码时,总是出现此错误:
答案 0 :(得分:0)
我将在答案中写下这个内容,因为即使我们尚未完全弄清您的代码出了什么问题,我也需要向您展示一些代码。
首先,您显示的错误意味着某些代码正在尝试迭代那些不可迭代的对象。如果您断言错误来自class Deserialize {
constructor(options) {
this.options = options;
this.leftovers = [];
}
get() {
return axios.get(this.options.url).then((response) => {
this.options.data = response.data;
return this.populate();
});
}
populate() {
let inputs = document.querySelectorAll(
this.options.form +
" input, " +
this.options.form +
" textarea, " +
this.options.form +
" select"
);
inputs.forEach((v, i) => {
let name = v.name;
let type = v.type;
let data = this.options.data;
data.forEach((i) => {
if (i == name) {
switch (type) {
case "checkbox":
v.checked = true;
break;
case "radio":
if (v.value == data[i]) v.checked = true;
break;
case "select-one":
case "textarea":
case "text":
case "tel":
case "date":
case "time":
case "email":
case "hidden":
case "password":
case "color":
v.value = data[i];
break;
}
} else {
this.leftovers.push(this.options.data[i]);
}
});
});
return this.leftovers;
}
}
const deserialize = new Deserialize({
form: "#account-form",
url: "/account/getAccountJson/",
})
.get()
.then(function (response) {
console.log(response);
});
循环是正确的,则表明for/of
不是可迭代的,因此不是Map对象。
通过这个简单的示例,您可以看到,如果books
是合法的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
对象,或者您的真实代码中发生了其他事情,您没有在此处显示我们。