for of 循环报错TypeError: obj[Symbol.iterator] is not a function。

报错:

 

for of 循环报错TypeError: obj[Symbol.iterator] is not a function。_第1张图片

参考https://www.cnblogs.com/m2maomao/p/7743143.html

原因:普通对象不可迭代

for...of 循环仅适用于迭代。 而普通对象不可迭代。 我们来看一下:

const obj = { fname: 'foo', lname: 'bar' };   
for (const value of obj) { // TypeError: obj[Symbol.iterator] is not a function console.log(value); }

在这里,我们定义了一个普通对象 obj ,并且当我们尝试 for...of 对其进行操作时,会报错:TypeError: obj[Symbol.iterator] is not a function。

 

解决方案:

我们可以通过将类数组(array-like)对象转换为数组来绕过它。该对象将具有一个 length 属性,其元素必须可以被索引。我们来看一个例子:

// object-example.js
const obj = { length: 3, 0: 'foo', 1: 'bar', 2: 'baz' };
 
const array = Array.from(obj);
for (const value of array) { 
    console.log(value);
}
// Output:
// foo
// bar
// baz
Array.from() 方法可以让我通过类数组(array-like)或可迭代对象来创建一个新的 Array(数组) 实例。

 

 

你可能感兴趣的:(for of 循环报错TypeError: obj[Symbol.iterator] is not a function。)