遍历对象的方法有哪些?区别是什么?
- 直接遍历
shell
for in 可遍历对象的自身和原型上的属性,可以结合 Object.hasOwnProperty.call(obj, key) 实现只遍历对象属性- 转数组再遍历
shell
Object.keys() 返回对象自身的值数组(转数组再遍历)
Object.values() 返回对象自身的属性数组(转数组再遍历)
Object.entries() 返回对象自身的属性和值的键值对二维数组(转数组再遍历)
Object.getOwnPropertyNames() 与 Object.keys()功能相同,区别是可以返回不可枚举的属性- 对象的不可枚举属性有哪些?
shell
lengthßß+
prototype
constructor
protojs
// 可以手动添加不可枚举属性
Object.defineProperty(obj, "a", {
value: 1,
writable: true, // 可写,是否可修改
enumerable: true, // 可枚举,是否可以被遍历方法获取到(object.keys()、for in 等)
configurable: true, // 可配置,是否可删除和通过Object.defineProperty修改
});什么是迭代对象?常见的迭代对象有哪些?遍历迭代对象的方法有哪些?区别是什么?
- 可迭代对象
shell
在 JavaScript 中,可迭代对象指的是可以使用迭代器访问其元素的对象。在 ES6 之后,许多内置的数据结构都实现了可迭代协议,可以通过 for...of 循环或使用迭代器对象进行遍历。- 常见的迭代对象
shell
数组
字符串
Set 和 Map 数据结构
dom集合
类数组对象(Arguments)
Generator 对象(Generator 函数的结果是一个可迭代对象)- 遍历迭代对象的方法有哪些?区别是什么?
shell
for of 可以遍历所有迭代对象 (注意:for of 只能用来遍历迭代对象,不能用来遍历普通对象)(直接遍历)
也可以通过 Array.from(迭代对象) 将遍历对象转为普通数组再遍历(转数组再遍历)
for、forEach 可以遍历数组的元素或者dom集合元素
for 可以遍历字符串
forEach 可以遍历 Set 和 Map 数据结构三、迭代数组的方法有哪些?区别是什么?终止循环的方法有哪些?
- 迭代数组的方法
shell
for
for of
forEach- 区别
- 都不对,需要重新实验,重新走
- 比如:是否可以修改对象属性、是否可以终止循环,使用什么方式终止
- 在 for 循环和 while 循环,通过 continue、break、return 终止循环
- continue 在循环中,当程序执行到此关键词时 跳过本次
- break 在循环中,当程序执行到此关键词时 终止整个循环
- return 在循环中,当程序执行到此关键词时 终止整个循环,包括整个后续程序(return 不能用于for循环)
