如何将带数字键的JSON对象转换为无外层键的对象数组
JSON类数组对象转数组方案
你要的details本质是提取原result对象所有属性值组成的数组,你示例里写的外层{}属于语法笔误,合法结构应该用数组符号[]包裹,具体实现可以用下面的方案:
最简实现(支持ES2017+环境)
直接用Object.values()方法提取对象所有可枚举属性的值,返回值就是你要的数组结构:
// 提取所有值组成数组 const details = Object.values(result); // 序列化输出 const res = JSON.stringify(details);
输出结果为:
[ {"name":"elezabeth","job":"accountant"}, {"name":"anna","job":"lawyer"} ]
兼容旧环境实现
如果需要兼容不支持Object.values()的旧JS环境,可以用Object.keys()搭配map方法实现:
const details = Object.keys(result).map(key => result[key]); const res = JSON.stringify(details);
额外:首字母大写处理
如果你需要和示例一样把第一个姓名首字母改为大写,可以在遍历的时候加一层转换逻辑:
const details = Object.values(result).map(item => { return { ...item, name: item.name.charAt(0).toUpperCase() + item.name.slice(1) } }) const res = JSON.stringify(details);
输出的第一个姓名就会变成Elizabeth。
你原来的代码const res = JSON.stringify(results[1]);只提取了索引为1的单个对象,所以无法拿到全部内容,替换成上面的全量提取逻辑即可。
内容的提问来源于stack exchange,提问作者Dilantha Wijesekara
相关产品推荐
相关产品推荐

