为什么如次无法遍历出全部值

来源: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>

祝学习愉快~

1

0 学习 · 17877 问题

查看课程