JavaScript 移除对象顶层键FSES/DSER并转换为对象数组
对象转数组的实现方案
原有代码失效的原因
- 代码中定义的
array是普通键值对对象,不具备数组实例专属的map方法,运行时会直接抛出array.map is not a function的类型错误,无法执行后续逻辑 - 原代码的取值逻辑仅提取每个内层对象的
address字段,没有保留完整的对象结构,就算遍历逻辑可以正常跑通,最终结果也只是地址字符串组成的数组,和目标要求的内嵌对象数组结构完全不匹配
可行实现方案
全量提取所有顶层键对应的内层值
如果需要把原对象所有顶层键(也就是示例中的FSES、DSER)对应的内容全部转成数组元素,直接调用原生的Object.values()方法即可,不需要手动写遍历拼接逻辑:
const desiredArray = Object.values(array)
该方法会自动按顺序收集对象所有可枚举属性的属性值组成数组,最终输出结果和目标格式完全一致:
// 实际运行输出 [ {empId: '322344BD', address: 'North'}, {empId: '322344BD', address: 'West'} ]
定向提取指定顶层键的内容
如果不需要全量提取所有顶层键的内容,只想精准获取FSES、DSER两个键对应的值,避免把其他无关的属性也纳入结果,可以先定义需要提取的键名列表,再逐个映射取值:
const targetKeys = ['FSES', 'DSER'] const desiredArray = targetKeys.map(key => array[key])
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

