如何将数组oArr
转换为以下示例所示的结果
例:
输入:
let oArr = [
{
'1': Object,
'range': [0, 778]
}, {
'2': Object,
'range': [0, 778]
}, {
'1': Object,
'range': [779, 1500]
}, {
'3': Objcet,
'range': [779, 1500]
}
]
输出:
result = [
{
'range': [0, 778],
'1': Object,
'2': Object
}, {
'range': [779, 1500],
'1': Object,
'3': Object
}
]
最佳答案
在数组的每个元素上使用reducer
函数将它们按范围值分组,并通过迭代除range以外的所有属性来在结果上设置另一个键。
oArr = [
{
'1': 'Object',
'range': [0, 778]
}, {
'2': 'Object',
'range': [0, 778]
}, {
'1': 'Object',
'range': [779, 1500]
}, {
'3': 'Object',
'range': [779, 1500]
}
];
var result = Object.values(oArr.reduce((c, obj) => {
c[obj.range] = c[obj.range] || {'range': obj.range};
for (const [key, value] of Object.entries(obj)) {
if(key === 'range') continue;
c[obj.range][key] = value;
}
return c;
}, {}));
console.log(result);
关于javascript - 如何将数据转换成这样的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58621033/