JavaScript 怎么给一些有对应关系的数组封装成对应的对象?

已知一个无序数组,有一个初始id

根据这个初始ID 从数组中排出

//处理后的结果
 {tid:8836,child:[{tid:936,child:[...],tid:939...}]}
//原始请求回来的数据
var begin_id = 8836;
var sub_list = [{
tid:8836,
sub:[936,939,972]
},{
tid:936,
sub:[872,811]
},{
tid:939,
sub:[762,755,703]
},{
tid:972,
sub:[644,691,672]
},{
tid:872,
sub:[544]
},{
tid:811,
sub:[435,435,435,435,435]
}]

求大佬们救命啊,我们后端不给处理,让我们自己处理

一些对应关系的数组 整理成map类型的数据


呼啦一阵风
浏览 208回答 7
7回答

慕后森

用数组push方法,符合规律的组成一组,然后JSON的两个方法把弄,剩下就是拼接字符串

慕盖茨4494581

var&nbsp;begin_id&nbsp;=&nbsp;8836; var&nbsp;sub_list&nbsp;=&nbsp;[{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;8836, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[936,&nbsp;939,&nbsp;972] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;936, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[872,&nbsp;811] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;939, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[762,&nbsp;755,&nbsp;703] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;972, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[644,&nbsp;691,&nbsp;672] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;872, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[544] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;811, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[435,&nbsp;435,&nbsp;435,&nbsp;435,&nbsp;435] }]; function&nbsp;myFind(id)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0,&nbsp;len&nbsp;=&nbsp;sub_list.length;&nbsp;i&nbsp;<&nbsp;len;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sub_list[i].tid&nbsp;==&nbsp;id)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;sub_list[i]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1; } function&nbsp;createObj(begin_id)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tempObj&nbsp;=&nbsp;{}; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;temp&nbsp;=&nbsp;myFind(begin_id); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(temp&nbsp;!=&nbsp;-1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempObj.tid&nbsp;=&nbsp;temp.tid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempObj.child&nbsp;=&nbsp;[]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(temp.sub&nbsp;&&&nbsp;temp.sub.length&nbsp;>&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0,&nbsp;len&nbsp;=&nbsp;temp.sub.length;&nbsp;i&nbsp;<&nbsp;len;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempObj.child.push(createObj(temp.sub[i])); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;tempObj; } &nbsp;createObj(begin_id);

人到中年有点甜

这就是个递归算法var&nbsp;begin_id&nbsp;=&nbsp;8836; var&nbsp;sub_list&nbsp;=&nbsp;[{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;8836, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[936,&nbsp;939,&nbsp;972] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;936, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[872,&nbsp;811] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;939, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[762,&nbsp;755,&nbsp;703] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;972, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[644,&nbsp;691,&nbsp;672] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;872, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[544] },&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;811, &nbsp;&nbsp;&nbsp;&nbsp;sub:&nbsp;[435,&nbsp;435,&nbsp;435,&nbsp;435,&nbsp;435] }] function&nbsp;convert(id)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;so&nbsp;=&nbsp;sub_list.filter(function(v){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;id&nbsp;==&nbsp;v.tid; &nbsp;&nbsp;&nbsp;&nbsp;})[0]; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;so&nbsp;?&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:&nbsp;so.tid, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;child:&nbsp;so.sub.map(function(v){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;convert(v); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;:&nbsp;id; } var&nbsp;obj&nbsp;=&nbsp;convert(begin_id); console.log(JSON.stringify(obj,null,4));

HUX布斯

&nbsp;var&nbsp;begin_id&nbsp;=&nbsp;8836; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;sub_list&nbsp;=&nbsp;[{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:8836, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[936,939,972] &nbsp;&nbsp;&nbsp;&nbsp;},{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:936, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[872,811] &nbsp;&nbsp;&nbsp;&nbsp;},{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:939, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[762,755,703] &nbsp;&nbsp;&nbsp;&nbsp;},{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:972, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[644,691,672] &nbsp;&nbsp;&nbsp;&nbsp;},{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:872, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[544] &nbsp;&nbsp;&nbsp;&nbsp;},{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tid:811, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub:[435,435,435,435,435] &nbsp;&nbsp;&nbsp;&nbsp;}] &nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createFindByIdArray(arr){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;function&nbsp;findById(id)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;arr.filter(item=>item.tid===id); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;subArrFind=createFindByIdArray(sub_list); &nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createTreeObject(id,obj={}){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;arr=subArrFind(id); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(arr.length){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;item=arr[0]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj['tid']=item.tid; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(item.sub.length){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.child=[]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(let&nbsp;i&nbsp;of&nbsp;item.sub){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.child.push(createTreeObject(i)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj['tid']=id; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;obj; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;result=createTreeObject(begin_id); &nbsp;&nbsp;&nbsp;&nbsp;console.log(result);

慕田峪9158850

把const let改成var 函数参数里的xx={} 放到函数里就行了

翻过高山走不出你

楼主,这是后端返回给你的数据吗,如果是,js会自动转成对象的呀,你直接遍历就行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript