将JavaScript对象映射到哈希数组中

时间:2018-06-26 08:13:22

标签: javascript ecmascript-6

我想获取一个Javascript对象并将其转换为哈希数组。

以下方法仅获取对象的一个​​元素并将其转换为数组:

const coordinatesArray = items.map((item) => item.latitude)

返回:[51.5165328979492, 51.5990409851074, 51.5990409851074, 51.5165328979492, 51.5098190307617, 51.5128326416016, 51.5098190307617, 51.501766204834, 51.514087677002, 51.4983825683594, 51.5294952392578, 51.5123977661133, 51.5011863708496, 51.5204887390137, 51.514087677002, 51.5117797851562, 51.5139465332031]

但是当我尝试创建哈希元素组成数组时,出现错误:

const coordinatesArray = items.map((item) => { x:item.latitude, y:item.longitude })

返回:Uncaught Error: Module build failed: SyntaxError: Unexpected token, expected ;

我在做什么错了?

3 个答案:

答案 0 :(得分:3)

您需要在花括号周围加上一些括号,否则它将在arrow functions中解释为block语句。

const coordinatesArray = items.map((item) => ({ x: item.latitude, y: item.longitude }));

具有破坏性和较短属性的短毛绒

const coordinatesArray = items.map(({ latitude: x, longitude: y }) => ({ x, y }));

答案 1 :(得分:3)

尝试以下操作:

const coordinatesArray = items.map((item) => ({ x:item.latitude, y:item.longitude }))

返回对象的Lambda函数需要一个额外的括号集()来将它们与函数体区分开。

答案 2 :(得分:0)

解析函数主体以返回对象文字表达式:

 params => ({foo: bar}) 

在您的情况下:

const coordinatesArray = items.map((item) => ({ x:item.latitude, y:item.longitude }))

更多信息here