[英]Convert array to object in JavaScript
我想使用其中一个属性作为键将数组转换为对象。
例如:
var stations = [ { name: 'A Coruna', ds100: 'OECSC' }, ... ];
我想获得stationByDs100
:
{ 'OECSC': { name: 'A Coruna', ds100: 'OECSC' }, ... }
目前我这样做如下:
var stationByDs100 = {};
stations.forEach(station => stationByDs100[station.ds100] = station);
我正在寻找一种更好的方法来实现这一点 - 是否可以使用没有显式变量声明的单线程?
例如在Java 8中,这可以通过一行中的流和收集器来完成,如:
Map<String, Station> stationByDs100 = stations.stream()
.collect(toMap(Station::getDs100, identity()));
所以我想也许在JS中有类似的方式。
我正在使用Node.js,所以可以使用Node.js支持的最新JS / ES功能。
我已经浏览了十几个现有的答案,但他们大多使用较旧的JS / ES版本,并建议更长的解决方案。
您可以将Object.assign
与计算属性名称一起使用 。
var stations = [ { name: 'A Coruna', ds100: 'OECSC' }], object = stations.reduce((o, a) => Object.assign(o, { [a.ds100]: a }), {}); console.log(object);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.