一个普通对象怎么改为迭代对象,从来使用for of
时间: 2024-10-19 11:17:34 浏览: 10
在JavaScript中,通常数组可以直接用于`for...of`循环,因为它们实现了内置的迭代器协议。但如果你有一个普通的对象想要支持`for...of`,你需要让它成为一个可迭代的(Iterable)。有两种常见的方式:
1. **通过扩展运算符添加迭代器方法**:
对于非数组对象,可以使用`Symbol.iterator`方法创建一个迭代器,并将其放在`[Symbol.iterator]`访问器属性上:
```javascript
class MyObj {
[Symbol.iterator]() {
let index = 0;
return {
next() {
if (index < this.length) {
return { value: this[index++], done: false };
} else {
return { done: true };
}
}
};
}
}
const obj = new MyObj('a', 'b', 'c');
for (let item of obj) {
console.log(item);
}
```
2. **使用ES6的`Array.from()`或`Array.of()`转换**:
可以将对象转换为数组,再转回来,虽然这并不一定是最高效的方法,但如果对象结构简单,这样做也是可行的:
```javascript
const myObj = { a: 'A', b: 'B' };
const iterableObj = Array.from(Object.entries(myObj));
for (const [key, value] of iterableObj) {
console.log(key, value);
}
```
阅读全文