JS-- for...in和for...of

1,for...in

用于遍历对象的可枚举属性(包括原型链上的),返回的是属性名(字符串)。

也可以遍历数组,但返回的是索引(字符串类型),不推荐用于数组。

2,for..of

用于遍历可迭代对象(如数组、字符串、Map、Set等),返回的是每一项的值。

不能直接用于普通对象(非可迭代对象)。

3,举例:

3.1 for...in遍历对象。不想要遍历原型链上的属性和方法通过obj.hasOwnProperty过滤掉

javascript 复制代码
for (const key in data) {
    if (data.hasOwnProperty(key)) {
        const value = data[key];
        if (value !== undefined) {
            items.push(`"${key}":${stringify(value)}`);
        }
    }
}

3.2 用for...of替代for...in,那么通过Object.keys(obj),拿到所有的对象的key

你可以用 for (const key of Object.keys(obj)) 替换 for...in,这样更安全,只遍历自有属性。

javascript 复制代码
for (const key of Object.keys(data)) {
    const value = data[key];
    if (value !== undefined) {
        items.push(`"${key}":${stringify(value)}`);
    }
}

for...in 用于遍历对象的属性名,返回字符串(包括原型链上的)。

for...of 用于遍历可迭代对象的值,不能直接用于普通对象。

相关推荐
暮冬-  Gentle°6 小时前
C++中的工厂模式实战
开发语言·c++·算法
爱宇阳6 小时前
Nuxt4 + Tailwind CSS v4 自定义响应式断点完整指南
前端·css·nuxt4
pu_taoc6 小时前
理解 lock_guard, unique_lock 与 shared_lock 的设计哲学与应用场景
开发语言·c++·算法
NGC_66116 小时前
Java 死锁预防:从原理到实战,彻底规避并发陷阱
java·开发语言
季明洵7 小时前
Java简介与安装
java·开发语言
myloveasuka7 小时前
红黑树、红黑规则、添加节点处理方案
开发语言·算法
2301_810160957 小时前
C++中的访问者模式高级应用
开发语言·c++·算法
Jutick7 小时前
揭秘低延迟:WebSocket 实时行情如何拯救你的量化策略?——Python 生产级实现
前端
~欲买桂花同载酒~7 小时前
项目优化-vite打包优化
前端·javascript·vue.js
m0_518019487 小时前
C++中的享元模式
开发语言·c++·算法