gpt4 book ai didi

javascript - 使普通对象可迭代。(javascript)

转载 作者:行者123 更新时间:2023-12-04 10:30:47 26 4
gpt4 key购买 nike

因此,在介绍了 Marjin Heverbeke 的 eloquent javascript 的前七章之后,我正在开展一个个人项目。我正在创建学校数据处理系统。所以我已经制作了包含很多对象的数据结构,所以我创建了一个测试对象,以便我可以练习迭代协议(protocol),这就是我写的

let object = {a:'a',b:'b',c:'c',d:'d',e:'e'};
object[Symbol.iterator]=function(){
let keys = Object.keys(this);
let count=0;
return {
next(){
if(count>keys.length){
return {value: null, done:true};
}
else{
let value=this[keys[count]];
count++;
return {value, done:false};
}
}
}
}

但是当我这样做时
    for(let each of object){
console.log([each]);
}

它输出
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]
//Array[undefined]

我不知道出了什么问题,请帮忙。

最佳答案

试试这个:

let object = {
a: 'a',
b: 'b',
c: 'c',
d: 'd',
e: 'e',
};
object[Symbol.iterator] = function () {
let keys = Object.keys(this);
let count = 0;
return {
next() {
if (count === keys.length) {
return {
value: null,
done: true,
};
}
let value = keys[count];
count++;
return {
value,
done: false,
};
},
};
};

for (let each of object) {
console.log([each]);
}

注意错误是: let value=this[keys[count]];if (count > keys.length)

关于javascript - 使普通对象可迭代。(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60424463/

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