You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历含嵌套对象的JS对象获取isArchived且不修改原对象?

解决方案

下面是几种遍历目标对象、访问每个ID对应值中isArchived属性且不修改原对象的常用方法:

方法1:使用 Object.keys() 遍历键名

const obj = {
  ID1: {
    completedThis: true,
    completedThat: false, 
    isArchived: true,
  },
  ID2: {
    completedThis: true,
    completedThat: false, 
    isArchived: true,
  },
};

// 遍历所有ID键
Object.keys(obj).forEach(id => {
  const isArchived = obj[id].isArchived;
  // 这里写你的操作,比如打印或收集数据
  console.log(`${id}的isArchived状态:`, isArchived);
});

方法2:使用 Object.values() 直接遍历值

如果不需要ID键,只需要访问每个子对象的isArchived,可以直接遍历对象的值:

Object.values(obj).forEach(item => {
  const isArchived = item.isArchived;
  // 执行你的操作
  console.log(isArchived);
});

方法3:使用 Object.entries() 同时获取键和值

需要同时拿到ID键和对应子对象时用这个方法:

Object.entries(obj).forEach(([id, item]) => {
  const isArchived = item.isArchived;
  // 示例操作:收集ID和对应的状态
  console.log({ id, isArchived });
});

方法4:使用 for...in 循环

传统循环方式,注意要通过hasOwnProperty确保只遍历对象自身的属性:

for (const id in obj) {
  if (obj.hasOwnProperty(id)) {
    const isArchived = obj[id].isArchived;
    // 执行你的操作
    console.log(isArchived);
  }
}

以上所有方法都是只读访问原对象的属性,只要不在操作中修改obj[id]或item的属性,就不会改动原对象。

内容的提问来源于stack exchange,提问作者kinzito17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:40:29