我有一个函数传入的这个对象
然后我想用这段代码循环遍历
let formData = new FormData();
let item = {};
let i = 0;
for (item of files) {
formData.append('file' + i, files[i]);
formData.append('filesNumber', i + 1);
i++;
}
但是当执行到达for循环的声明时,它会崩溃并出现此错误
Uncaught TypeError: files[Symbol.iterator] is not a function
有什么问题?
答案 0 :(得分:2)
基本对象不会自动实现Symbol.iterator
。 Here's a list of objects that do.
为了使用for..of
语法,您必须实现自己的迭代器。
let files = {
0: "a",
1: "b",
2: "c",
[Symbol.iterator]: function*() {
let i = 0;
while (this.hasOwnProperty(i)) {
yield this[i];
i++;
}
}
};
for (let item of files) {
console.log(item);
}

或者,您只需grabs the objects keys并迭代它们。
let files = {
0: "a",
1: "b",
2: "c"
};
let keys = Object.keys(files);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let item = files[key];
console.log(`${key}: ${item}`);
}
&#13;
你也可以使用好的,老式的for..in
循环来检查键。
let files = {
0: "a",
1: "b",
2: "c"
};
for (let key in files) {
console.log(`${key}: ${files[key]}`);
}
&#13;