我有一个带有命名键的对象数组,如下所示:
Array [
{
'postal1': 111, // number
'postal2': 222, // number
'town': 'London', // string
},
{},{},... // Objects with same properties
]
该数组是在DOM之后创建的,并从后端动态填充,因此从一开始它就是一个空数组。
具有所有这些,我想创建一个新对象,其中键将为town
,而它们的 values 将是另外两个键{{1 }}和postal1
。
postal2
如何以最有效的方式做到这一点?
答案 0 :(得分:1)
您可以使用Array.reduce()
从数组生成对象:
const data = [{
'postal1': 111, // number
'postal2': 222, // number
'town': 'London', // string
}];
const result = data
.reduce((r, { town, postal1, postal2 }) => {
r[town] = [postal1, postal2];
return r;
}, {});
console.log(result);
答案 1 :(得分:1)
尝试一下:
var A= [
{
'postal1': 1110, // number
'postal2': 2220, // number
'town': 'A', // string
},
{
'postal1': 1111, // number
'postal2': 2221, // number
'town': 'B', // string
},
{
'postal1': 1112, // number
'postal2': 2222, // number
'town': 'C', // string
}
];
var desiredResult={};
A.forEach(function(a){
desiredResult[a.town]=[a.postal1, a.postal2];
});
console.log(desiredResult);
但是这比all
快:
var i=0,
result={};
for(; i<A.length; i++) result[A[i].town]=[A[i].postal1, A[i].postal2];