如何遍历含嵌套对象的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
相关产品推荐
相关产品推荐

