ES6遍历多维对象:如何遍历对象键并完整获取子对象?
ES6遍历对象键并传递对应子对象到函数的方法
当然可以啦!ES6提供了非常便捷的方式来处理这种对象遍历需求,下面我给你介绍几种最常用的实现方式,都是现在前端开发里很常用的写法:
1. 用Object.entries()(最推荐的简洁写法)
Object.entries()是ES6新增的神器,它会直接返回一个包含对象所有键值对的数组,每一项都是[键名, 对应子对象]的形式,完全匹配你要的“拿键+对应子对象”的需求。
举个实际的例子:
// 你的原始数据对象 const dataSubmit = { email : { value : 'test@example.com', rules : 'required email' }, password : { value : '123456', rules : 'required,min:6' } }; // 假设这是你要调用的目标函数 function func(fieldObj) { // 这里可以处理传入的对象,比如打印看看效果 console.log('传入的字段数据:', fieldObj); } // 核心遍历逻辑 Object.entries(dataSubmit).forEach(([key, subObj]) => { // 用ES6的计算属性名,动态生成参数对象,刚好符合你要的调用形式 func({ [key]: subObj }); });
这里用了解构赋值([key, subObj])直接从entries返回的数组里取出键和子对象,再用[key]这个计算属性名来组装参数,完美实现你想要的func(email: {value: ...})的调用效果。
2. 用Object.keys()配合对象访问(更直观的分步写法)
如果你更习惯先拿到所有键名,再逐个获取对应的子对象,Object.keys()也是个不错的选择:
Object.keys(dataSubmit).forEach(key => { const subObj = dataSubmit[key]; func({ [key]: subObj }); });
这种方式逻辑更分步,适合刚接触ES6的开发者理解,只是比Object.entries()多了一步取子对象的操作。
3. 用for...of循环(适合需要控制流程的场景)
如果你需要在遍历过程中做中断、跳过之类的操作,for...of循环会比forEach更灵活,因为它支持break、continue这些语句:
for (const [key, subObj] of Object.entries(dataSubmit)) { // 比如可以加条件判断,只处理特定键 if (key === 'email') { func({ [key]: subObj }); } }
这种方式适合复杂的遍历场景,比如需要根据某些条件跳过部分键的处理。
额外补充:如果你的函数需要独立参数
要是你的func其实是需要接收键名和子对象作为两个独立参数(而不是一个对象),那更简单,直接传就行:
// 假设你的函数是这样定义的 function func(fieldName, fieldData) { console.log(`字段名:${fieldName}`, '对应的字段数据:', fieldData); } // 调用的时候直接解构传递 Object.entries(dataSubmit).forEach(([key, subObj]) => { func(key, subObj); });
以上几种方法都是ES6标准里的特性,现在主流浏览器和Node.js都完全支持,你可以根据自己的场景选择最合适的方式~
内容的提问来源于stack exchange,提问作者shendoma03
相关产品推荐
相关产品推荐

