如何在Javascript中将数组更改为对象?

时间:2017-11-07 15:06:36

标签: javascript arrays json reactjs

我有对象列表

[
    { regionName:'Alabama',code:'AL', value: 89 },
    { regionName:'Alaska',code:'AK', value: 112 },
    { regionName:'Arizona',code:'AZ', value: 101 },
    { regionName:'Arkansas',code:'AR', value: 123 }
]

我想将其转换为以下格式 -

{
     AL: { value: 89  },
     AK: { value: 112 },
     AZ: { value: 101 },
     AR: { value: 123 }
}

如何在JS中实现这一目标?

3 个答案:

答案 0 :(得分:5)

您可以使用map提供的callback函数作为parameter使用let array=[ { regionName:'Alabama',code:'AL', value: 89 }, { regionName:'Alaska',code:'AK', value: 112 }, { regionName:'Arizona',code:'AZ', value: 101 }, { regionName:'Arkansas',code:'AR', value: 123 } ]; array = Object.assign(...array.map(({ code, value }) => ({ [code]: {value:value }}))); console.log(array);方法,该函数适用于给定数组中的每个项目。

Option Explicit

Public Sub TestMe()

    Dim ser As Series

    For Each ser In ActiveSheet.ChartObjects(1).Chart.SeriesCollection
        Debug.Print ser.Name
        Debug.Print ser.Formula
    Next ser

End Sub

答案 1 :(得分:3)

您可以使用array.prototype.reduce,以便在每次迭代时将新key(AL,AK或AZ)附加到最终结果中。



const arr = [
  { regionName:'Alabama',code:'AL', value: 89 },
  { regionName:'Alaska',code:'AK', value: 112 },
  { regionName:'Arizona',code:'AZ', value: 101 },
  { regionName:'Arkansas',code:'AR', value: 123 }
]
    
const result = arr.reduce((prev, curr) => {
  return {
    ...prev,
    [curr.code]: { value: curr.value },
  }
}, {})

console.log(result)




答案 2 :(得分:1)

可能是我迟到了,但这也适用于简单的Array.prototype.map()

var array_of_objects = [
    { regionName:'Alabama',code:'AL', value: 89 },
    { regionName:'Alaska',code:'AK', value: 112 },
    { regionName:'Arizona',code:'AZ', value: 101 },
    { regionName:'Arkansas',code:'AR', value: 123 }
];
var required = {};
var result = array_of_objects.map(function(obj){
  return (required[obj.code] = {value:obj.value});
})

console.log(required);

<强>结果:

{
  "AL": {"value": 89},
  "AK": {"value": 112},
  "AZ": {"value": 101},
  "AR": {"value": 123}
}