不使用双重for循环将嵌套对象转为扁平列表的最简洁方法是什么
实现对象转数组的高效方案
你不需要用双重for循环实现,根据你的实际场景可以选择以下两种更高性能的方案,均使用JS引擎底层优化过的内置方法实现,执行效率远高于手写循环:
场景1:确认times对象仅包含20102单个目标属性
这是性能最优的方案,时间复杂度为O(1),没有任何遍历开销,直接取属性值赋值即可:
times = times['20102']
场景2:times对象包含多个类似20102的属性,需要合并所有属性对应的数组
时间复杂度为O(n)(n为所有数组元素总个数):
// 现代JS环境可用,flat默认拉平1层数组,刚好适配需求 times = Object.values(times).flat() // 兼容低版本不支持flat的环境,效果完全一致 times = Array.prototype.concat.apply([], Object.values(times))
效果验证
以你给出的原始结构为例,执行上述任意适配场景的代码后,times输出结果完全符合预期:
console.log(times) // 输出: // [ // { name:'jane', age:12 }, // { name:'josh', age:19 }, // { name:'jill', age:14 } // ]
内容的提问来源于stack exchange,提问作者Colorful Codes
相关产品推荐
相关产品推荐

