国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

超優雅!node.js 無限級分類,無遞歸獲取所有下級分類ID。

calx / 732人閱讀

摘要:昨天幫同事解決問題,于是誕生了超優雅兩行代碼搞定無限級分類獲取頂級分類這篇文章。這次要解決的問題是根據分類,獲取所有下級分類的,這里說的所有下級分類,是包含下級下下級下下下級另外剛好在學習,于是用上了對象。

昨天幫同事解決問題,于是誕生了“超優雅!兩行代碼搞定 php 無限級分類 獲取頂級分類ID”這篇文章。

晚上回家做自己的node.js項目的時候,又遇到關于無限級分類的問題了。
其實也不是“遇到”,而是強迫癥發作 不睡覺 干脆起床,把之前用遞歸現實的版本,改成用循環實現了。

這次要解決的問題是:根據分類ID,獲取所有下級分類的ID,
這里說的“所有下級分類”,是包含下級、下下級、下下下級……

另外剛好在學習ES6,于是用上了Set對象。
首先還是要將數據處理成{ id:pid, ... }這種格式,以下是我的數據。

var idPidArr = {
  "1": 2,
  "2": 0,
  "3": 2,
  "4": 43,
  "5": 2,
  "6": 2,
  "7": 0,
  "8": 0,
  "9": 1,
  "10": 1,
  "11": 1,
  "12": 1,
  "13": 1,
  "14": 1,
  "15": 0,
  "16": 1,
  "17": 102,
  "18": 43,
  "19": 43,
  "20": 3,
  "21": 3,
  "22": 43,
  "23": 43,
  "24": 5,
  "25": 43,
  "26": 43,
  "27": 43,
  "28": 4,
  "29": 4,
  "30": 4,
  "31": 43,
  "32": 111,
  "33": 5,
  "34": 43,
  "35": 5,
  "36": 88,
  "37": 43,
  "38": 43,
  "39": 43,
  "40": 6,
  "41": 70,
  "42": 6,
  "43": 0,
  "44": 43,
  "45": 43,
  "46": 8,
  "47": 8,
  "48": 43,
  "49": 8,
  "50": 43,
  "51": 67,
  "52": 125,
  "53": 43,
  "54": 43,
  "55": 124,
  "56": 0,
  "57": 6,
  "58": 6,
  "59": 111,
  "60": 43,
  "61": 43,
  "62": 56,
  "63": 43,
  "64": 4,
  "65": 43,
  "66": 43,
  "67": 102,
  "68": 43,
  "69": 4,
  "70": 102,
  "71": 56,
  "72": 124,
  "73": 43,
  "74": 43,
  "75": 8,
  "76": 17,
  "77": 43,
  "78": 0,
  "79": 43,
  "80": 43,
  "81": 103,
  "82": 15,
  "83": 17,
  "84": 3,
  "85": 15,
  "86": 3,
  "87": 43,
  "88": 43,
  "89": 111,
  "90": 43,
  "91": 15,
  "92": 6,
  "93": 6,
  "94": 43,
  "95": 53,
  "96": 103,
  "97": 111,
  "98": 6,
  "99": 70,
  "100": 15,
  "101": 6,
  "102": 0,
  "103": 43,
  "104": 103,
  "105": 103,
  "106": 103,
  "107": 7,
  "108": 7,
  "109": 7,
  "110": 7,
  "111": 102,
  "112": 8,
  "113": 1,
  "114": 103,
  "115": 103,
  "116": 43,
  "117": 43,
  "118": 43,
  "119": 125,
  "120": 111,
  "121": 70,
  "122": 111,
  "123": 70,
  "124": 8,
  "125": 8,
  "126": 124,
  "127": 125,
  "128": 88,
  "129": 43,
  "130": 3,
  "131": 43,
  "132": 43,
  "133": 86,
  "134": 21,
  "135": 21,
  "136": 86,
  "137": 20,
  "138": 20 };

然后 假設要獲取分類 ID: 8 的所有下級分類的 ID。

var bmid = 8;

var pids = new Set([bmid]);
do {
    var len = pids.size;

    for(var id in idPidArr) {
        if (pids.has(idPidArr[id])) {
            pids.add(Number(id));
            delete idPidArr[id]; // 感謝 @zhoutk 提醒
        }
    }
} while (pids.size>len);

console.log(Array.from(pids));

輸出所有下級分類 ID 數組是 [ 8, 46, 47, 49, 75, 112, 124, 125, 126, 127, 52, 55, 72, 119 ]

然后……沒有了,
為什么有一種虎頭蛇尾的感覺呢?
代碼已經夠簡潔了,應該不必逐行解釋了吧……

哎~ 為什么我可以寫出如此精妙的代碼,
卻永遠猜不透“石化油服”的走勢!??!
來一首五月天的《超人》體會一下我此刻的心情。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78862.html

相關文章

  • 優雅!兩行代碼搞定 php 分類 獲取分類ID

    摘要:有這樣一個表,是分類的,是分類名稱,是上級分類的?,F在有個分類,程序要找到它上級的上級的上級分類的,簡單說就是找出頂級分類的。比如新鮮水果的是,對應父類是,而的父是,沒有父類,也就是頂級分類了。 有這樣一個表,id是分類的ID,name是分類名稱,pid是上級分類的ID。showImg(https://segmentfault.com/img/bVtnrg); 現在有個分類ID,程序要...

    hedzr 評論0 收藏0
  • 在數據庫中存儲一棵樹,實現分類

    摘要:第三條同樣需要遞歸,因為通過一個分類,數據庫中只存儲了其直屬父類,需要通過遞歸到頂級分類才能獲取到它們之間的所有分類信息。 原文發表于我的博客: https://blog.kaciras.net/article/36 在一些系統中,對內容進行分類是必需的功能。比如電商就需要對商品做分類處理,以便于客戶搜索;論壇也會分為很多板塊;門戶網站、也得對網站的內容做各種分類。 分類對于一個內容展...

    Airy 評論0 收藏0
  • PHP 分類最佳實踐

    無限級分類 是一種很常見,很必須的功能,幾乎每個項目都有。 應用場景:下拉列表,樹型列表等 無限級分類的類型 前端實現(前端框架一般已經實現好了,只要后端按照指定格式傳數據給前端就可以生成了) 后端實現(下面主要講這種實現) 無限級多種實現 第一種(推薦) function infiniteSort($data, $showFName, $titleFName, $pidFName = p...

    yzzz 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<