如何将数组 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
函数将它们按范围值分组,并通过迭代除范围之外的所有属性来设置结果的另一个键。
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/