繁体   English   中英

在JavaScript中将数组转换为对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM