gpt4 book ai didi

javascript - 调用 [Symbol.iterator]() 时未生成对象

转载 作者:行者123 更新时间:2023-11-30 09:28:42 24 4
gpt4 key购买 nike

这是源代码:

const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]:function*(){
yield Object.keys(this) ;
}
};
const iterator = james[Symbol.iterator]();
//
console.log(iterator.next().value); // 'James'
console.log(iterator.next().value); // `5'10`
console.log(iterator.next().value); // 185

第一次调用 iterator.next().value 应该打印

{"value":"James","key":"name","done":false}

但它正在打印 {"value":["name","height","weight"],"done":false}。如何解决这个问题?

最佳答案

您一次yield 所有 key 。意味着您的第一个 next 完成所有工作。您所需要做的就是遍历键并按顺序 yield 它们。

const james = {
name: 'James',
height: `5'10"`,
weight: 185,
[Symbol.iterator]:function*(){
for(let key of Object.keys(this)) {
yield { propValue: this[key], propName: key};
}
}
};

const iterator = james[Symbol.iterator]();

console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());

关于javascript - 调用 [Symbol.iterator]() 时未生成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47725541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com