在Node.js中如何将数组对象转换为键值对对象?
把数组转成键为name、值为size的对象
假设你有如下数组数据:
[ {"name": "ford", "size": 220}, {"name": "chevy", "size": 230}, {"name": "jeep", "size": 240} ]
要转换成键为name字段值、值为size字段值的单个对象,下面是几种常用场景的实现方式:
JavaScript
方法1:用reduce(兼容性强)
这是数组处理的通用写法,几乎所有环境都支持:
const arr = [{"name": "ford", "size": 220},{"name": "chevy", "size": 230},{"name": "jeep", "size": 240}]; const result = arr.reduce((acc, curr) => { acc[curr.name] = curr.size; return acc; }, {});
运行后result就是目标格式:{ ford: 220, chevy: 230, jeep: 240 }
方法2:用Object.fromEntries(ES2019+)
语法更简洁,适合现代JavaScript环境:
const arr = [{"name": "ford", "size": 220},{"name": "chevy", "size": 230},{"name": "jeep", "size": 240}]; const result = Object.fromEntries(arr.map(item => [item.name, item.size]));
Python
一行字典推导式就能搞定:
arr = [{"name": "ford", "size": 220}, {"name": "chevy", "size": 230}, {"name": "jeep", "size": 240}] result = {item["name"]: item["size"] for item in arr}
输出结果:{'ford': 220, 'chevy': 230, 'jeep': 240}
SQL直接查询生成(如果从数据库取数时就想要这个结构)
不同数据库的函数语法有差异:
- PostgreSQL:使用
json_object_agg
SELECT json_object_agg(name, size) FROM sometable;
返回结果是JSON对象:{"ford":220,"chevy":230,"jeep":240}
- MySQL 8.0+:使用
json_objectagg
SELECT JSON_OBJECTAGG(name, size) FROM sometable;
内容的提问来源于stack exchange,提问作者Fattie
相关产品推荐
相关产品推荐

