为什么如次无法遍历出全部值
来源:2-11 编程练习
懒狗不配发财
2023-02-12 03:22:55
const obj = {
"0": "xm",
"sex": "male",
length: 2
}
obj[Symbol.iterator] = Array.prototype[Symbol.iterator];
for(const item of obj){
console.log(item);
}
// 输出:
// xm
// undefined1回答
好帮手慕慕子
2023-02-12
同学你好,因为使用的是数组的iterator,那么只会针对有顺序的数字索引进行遍历,而obj对象下的sex和length属性名并不符合数字索引的要求,所以无法遍历出所有的值。
本练习题重点是想让同学练习和巩固下课程中讲解的思路和方式,建议参考如下示例测试:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
const obj = {
0: "xm",
sex: "male",
length: 2,
};
// 在此补充代码
obj[Symbol.iterator] = () => {
let index = 0;
return {
next() {
index++;
if (index == 1) {
return {
value: obj["0"],
done: false,
};
} else if (index == 2) {
return {
value: obj.sex,
done: false,
};
} else if (index == 3) {
return {
value: obj.length,
done: false,
};
} else {
return {
done: true,
};
}
},
};
};
for (let item of obj) {
console.log(item);
}
</script>
</body>
</html>祝学习愉快~
相似问题