第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

JavaScript 怎么給一些有對應關(guān)系的數(shù)組封裝成對應的對象?

JavaScript 怎么給一些有對應關(guān)系的數(shù)組封裝成對應的對象?

呼啦一陣風 2019-04-11 18:15:33
已知一個無序數(shù)組,有一個初始id根據(jù)這個初始ID 從數(shù)組中排出//處理后的結(jié)果  {tid:8836,child:[{tid:936,child:[...],tid:939...}]}//原始請求回來的數(shù)據(jù) 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] }]求大佬們救命啊,我們后端不給處理,讓我們自己處理一些對應關(guān)系的數(shù)組 整理成map類型的數(shù)據(jù)
查看完整描述

7 回答

?
慕后森

TA貢獻1802條經(jīng)驗 獲得超5個贊

用數(shù)組push方法,符合規(guī)律的組成一組,然后JSON的兩個方法把弄,剩下就是拼接字符串

查看完整回答
反對 回復 2019-05-13
?
慕蓋茨4494581

TA貢獻1850條經(jīng)驗 獲得超11個贊

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]
}];
function myFind(id) {
    for (var i = 0, len = sub_list.length; i < len; i++) {
        if (sub_list[i].tid == id) {
            return sub_list[i];
        }
    }
    return -1;
}

function createObj(begin_id) {
    var tempObj = {};
    var temp = myFind(begin_id);
    if (temp != -1) {
        tempObj.tid = temp.tid;
        tempObj.child = [];
        if (temp.sub && temp.sub.length > 0) {
            for (var i = 0, len = temp.sub.length; i < len; i++) {
                tempObj.child.push(createObj(temp.sub[i]));
            }
        }
    }
    return tempObj;
}
 createObj(begin_id);


查看完整回答
反對 回復 2019-05-13
?
人到中年有點甜

TA貢獻1895條經(jīng)驗 獲得超7個贊

這就是個遞歸算法

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]
}]

function convert(id) {
    var so = sub_list.filter(function(v){
        return id == v.tid;
    })[0];
    return so ? {
        tid: so.tid,
        child: so.sub.map(function(v){
                return convert(v);
            })
        } : id;
}
var obj = convert(begin_id);
console.log(JSON.stringify(obj,null,4));



查看完整回答
反對 回復 2019-05-13
?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

 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]
    }]
    function createFindByIdArray(arr){
        return function findById(id) {
            return arr.filter(item=>item.tid===id);
        }
    }
    const subArrFind=createFindByIdArray(sub_list);
    function createTreeObject(id,obj={}){
        const arr=subArrFind(id);
        if(arr.length){
            const item=arr[0];
            obj['tid']=item.tid;
            if(item.sub.length){
                obj.child=[];
                for(let i of item.sub){
                    obj.child.push(createTreeObject(i));
                }
            }
        }else{
            obj['tid']=id;
        }
        return obj;
    }
    const result=createTreeObject(begin_id);
    console.log(result);


查看完整回答
反對 回復 2019-05-13
?
慕田峪9158850

TA貢獻1794條經(jīng)驗 獲得超8個贊

把const let改成var 函數(shù)參數(shù)里的xx={} 放到函數(shù)里就行了

查看完整回答
反對 回復 2019-05-13
?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

樓主,這是后端返回給你的數(shù)據(jù)嗎,如果是,js會自動轉(zhuǎn)成對象的呀,你直接遍歷就行


查看完整回答
反對 回復 2019-05-13
  • 7 回答
  • 0 關(guān)注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號