亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求大佬指點哈!js 數組重組 根據配置嵌套結構 形成 父子級數據

求大佬指點哈!js 數組重組 根據配置嵌套結構 形成 父子級數據

大話西游666 2019-10-17 09:26:40
原數組如下[[{"name":"VKORG","value":"1000"},{"name":"VTWEG","value":"100"},{"name":"SPART","value":"10"},{"name":"VKORGTEXT","value":"1000text"},{"name":"VTWEGTEXT","value":"100text"},{"name":"SPARTTEXT","value":"10text"}],[{"name":"VKORG","value":"1000"},{"name":"VTWEG","value":"100"},{"name":"SPART","value":"9"},{"name":"VKORGTEXT","value":"1000text"},{"name":"VTWEGTEXT","value":"100text"},{"name":"SPARTTEXT","value":"9text"}],[{"name":"VKORG","value":"1252"},{"name":"VTWEG","value":"100"},{"name":"SPART","value":"10"},{"name":"VKORGTEXT","value":"1252text"},{"name":"VTWEGTEXT","value":"100text"},{"name":"SPARTTEXT","value":"10text"}]]父子關系是動態的可配置規則展示二級或者三級嵌套如['VKORG','VTWEG','SPART']三級或者['VKORG','VTWEG']二級如果形成三級父子級數組如下[{'value':'1000','label':'1000text','children':[{'value':'100','label':'100text','children':[{'value':'10','label':'10text'},{'value':'9','label':'9text'}]}]},{'value':'1252','label':'1252text','children':[{'value':'100','label':'100text','children':[{'value':'10','label':'10text'}]}]}]如果形成二級嵌套數組如下[{'value':'1000','label':'1000text','children':[{'value':'100','label':'100text'}]},{'value':'1252','label':'1252text','children':[{'value':'100','label':'100text'}]}]請問下怎么樣根據設置的嵌套層數得到以上結果###題目描述題目來源及自己的思路相關代碼//請把代碼文本粘貼到下方(請勿用圖片代替代碼)你期待的結果是什么?實際看到的錯誤信息又是什么?
查看完整描述

2 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

consttransform=(()=>{
constunique=items=>{
consthash=newMap();
for(constitemofitems){
constid=String([item.label,item.value]);
if(hash.has(id)){
hash.get(id).children.push(...item.children);
}else{
hash.set(id,item);
}
}
constcollection=[];
for(const[,item]ofhash){
collection.push(item);
if(item.children)item.children=unique(item.children);
}
returncollection;
};
returnitems=>{
items=items.map(item=>{
consthash={};
for(const{name,value}ofitem){
hash[name]=value;
}
returnhash;
});
returnkeys=>{
constcollection=items.map(item=>{
constcollection=[];
for(
leti=0,key=keys[i],p=collection;
key;
key=keys[(i+=1)],p=p[0].children
){
p.push({children:[],label:item[key+"TEXT"],value:item[key]});
}
returncollection[0];
});
returnunique(collection);
};
};
})();
constitems=[
[
{name:"VKORG",value:"1000"},
{name:"VTWEG",value:"100"},
{name:"SPART",value:"10"},
{name:"VKORGTEXT",value:"1000text"},
{name:"VTWEGTEXT",value:"100text"},
{name:"SPARTTEXT",value:"10text"}
],
[
{name:"VKORG",value:"1000"},
{name:"VTWEG",value:"100"},
{name:"SPART",value:"9"},
{name:"VKORGTEXT",value:"1000text"},
{name:"VTWEGTEXT",value:"100text"},
{name:"SPARTTEXT",value:"9text"}
],
[
{name:"VKORG",value:"1252"},
{name:"VTWEG",value:"100"},
{name:"SPART",value:"10"},
{name:"VKORGTEXT",value:"1252text"},
{name:"VTWEGTEXT",value:"100text"},
{name:"SPARTTEXT",value:"10text"}
]
];
consttrans=transform(items);
console.log(trans(["VKORG","VTWEG","SPART"]));
console.log(trans(["VKORG","VTWEG"]));
                            
查看完整回答
反對 回復 2019-10-17
  • 2 回答
  • 0 關注
  • 327 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號