Javascript 如何将数据转换为这种结构
如何将数组oArr转换为如下示例所示的结果 例如: 输入:Javascript 如何将数据转换为这种结构,javascript,arrays,object,data-structures,data-conversion,Javascript,Arrays,Object,Data Structures,Data Conversion,如何将数组oArr转换为如下示例所示的结果 例如: 输入: let oArr = [ { '1': Object, 'range': [0, 778] }, { '2': Object, 'range': [0, 778] }, { '1': Object, 'range': [779, 1500] }, { '3': Objcet, 'range': [779, 1500]
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函数将它们按范围值分组,并通过迭代除范围之外的所有属性来设置结果的另一个键
桨=[
{
“1”:“对象”,
“范围”:[0778]
}, {
“2”:“对象”,
“范围”:[0778]
}, {
“1”:“对象”,
“范围”:[7791500]
}, {
“3”:“对象”,
“范围”:[7791500]
}
];
var result=Object.valuessarer.reducec,obj=>{
c[obj.range]=c[obj.range]| |{'range':obj.range};
对于Object.entriesobj{
ifkey=='range'继续;
c[对象范围][键]=值;
}
返回c;
}, {};
console.logresult
让oArr=[
{
'1':{Object:'object1'},
“范围”:[0778]
}, {
'2':{Object:'object2'},
“范围”:[0778]
}, {
'1':{Object:'object3'},
“范围”:[7791500]
}, {
'3':{Object:'object4'},
“范围”:[7791500]
}
];
设res=[];
oArr.forEach obj=>{
设index=res.indexOf res.findresObj=>resObj.range[0]==obj.range[0]&&resObj.range[1]==obj.range[1];
console.logindex;
让key=Object.keysobj.findkey=>key!='range';
index==-1?res.push对象:res[index][key]=obj[key];
};
console.logres;规则是什么?你们按范围联合收割机吗?是否存在重叠范围,例如[0,10]和[5,15],或者它们始终是相同的还是不同的?您好Hughie,请告诉我们您尝试了什么方法?您是否在javascript中遇到一些语法或方法的问题。是的,只需按范围合并,并且没有重叠的范围,在按顺序进行转换之前,范围属性是固定的,如[0,100]、[101,200]、[201,300]。。。。