我有对象列表
[
{ 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中实现这一目标?
答案 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}
}