Lodash从ImmutableJS Maps中选择值到新对象中

时间:2017-07-10 08:12:21

标签: ecmascript-6 lodash immutable.js

有一种很好的方法可以从不可变地图中选择某些键/值以返回到新的对象/地图吗?似乎与我目前的情况过于线性:

const depart = flightStatusState.getIn(['activeTraveller', 'outbound', 'departMapData'])
const arrive = flightStatusState.getIn(['activeTraveller', 'outbound', 'arriveMapData'])

const departLat = depart.get('lat');
const departLng = depart.get('lng');
const arriveLat = arrive.get('lat');
const arriveLng = arrive.get('lng');

const outboundMapDataLatLngs = [{ lat: departLat, lng: departLng }, { lat: arriveLat, lng: arriveLng }]

1 个答案:

答案 0 :(得分:1)

我在ImmutableJS中找到了Mudash支持的Lodash变体,以便在Immutable地图上使用M.pickBy并完成以下操作:

const outbound = flightStatusState.getIn(['activeTraveller', 'outbound'])
const outboundMapData = List.of(outbound.get('departMapData'), outbound.get('arriveMapData'))

const outboundMapDataLatLngs = outboundMapData.map(destination => 
  M.pickBy(destination, (value, key) => 
    _.startsWith(key, "l")
  ) 
)

(我需要单独outboundMapData以及第二行)

然后它只使用最后一行将嵌套的lat / lngs挑选到它自己的实体中。然后来自ImmutableJS的toJS()outboundMapDataLatLngs上用于呈现它所需的组件。