为什么如次无法遍历出全部值
来源: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 // undefined
1回答
好帮手慕慕子
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>
祝学习愉快~
相似问题