通过动态枚举其他对象的键来创建新对象
Creating new objects by dynamically enumerating keys of others
我有一个对象数组,其命名键如下:
Array [
{
'postal1': 111, // number
'postal2': 222, // number
'town': 'London', // string
},
{},{},... // Objects with same properties
]
该数组是在 DOM 之后创建的,并从后端动态填充,因此从一开始它就是一个空数组。
拥有所有这些我想创建一个新对象,其中 keys 将是 town
并且它们的 values 将是一个另外两个键 postal1
和 postal2
.
的数组
Object {
'London': [111,222],
'town...': [rand,rand],
}
如何以最有效的方式做到这一点?
您可以使用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);
试试这个:
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];
我有一个对象数组,其命名键如下:
Array [
{
'postal1': 111, // number
'postal2': 222, // number
'town': 'London', // string
},
{},{},... // Objects with same properties
]
该数组是在 DOM 之后创建的,并从后端动态填充,因此从一开始它就是一个空数组。
拥有所有这些我想创建一个新对象,其中 keys 将是 town
并且它们的 values 将是一个另外两个键 postal1
和 postal2
.
Object {
'London': [111,222],
'town...': [rand,rand],
}
如何以最有效的方式做到这一点?
您可以使用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);
试试这个:
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];