簡體   English   中英

Javascript Lodash展平層次結構對象

[英]Javascript lodash flatten hierarchical object

我有分層的json。 我想弄平它。 這是我的json:

{
  "id": "111",
  "name": "v5",
  "define": {
    "system": "abc",
    "concept": [{
      "code": "y7",
      "concept": [{
        "code": "AGG",
        "display": "Abcess"
      }, {
        "code": "ABS",
        "display": "Abcess"
      }]
    }, {
      "code": "y8",
      "concept": [{
        "code": "AGc",
        "display": "ccc"
      }, {
        "code": "hjj",
        "display": "uii"
      }]
    }]
  }
}

lodash ,有沒有一種方法可以將此json展平為“僅顯示代碼”數組?

如果否,是否還有其他圖書館可以做到? 謝謝。

例如結果:

[{
  "code": "AGG",
  "display": "Abcess"
}, {
  "code": "ABS",
  "display": "Abcess"
}, {
  "code": "AGc",
  "display": "ccc"
}, {
  "code": "hjj",
  "display": "uii"
}]

在lodash中有沒有一種方法可以將此json展平為僅“ desplay”代碼的數組?

您的意思是將所有concept聯結?

嘗試這個

 var obj = { "id": "111", "name": "v5", "define": { "system": "abc", "concept": [{ "code": "y7", "concept": [{ "code": "AGG", "display": "Abcess" }, { "code": "ABS", "display": "Abcess" }] }, { "code": "y8", "concept": [{ "code": "AGc", "display": "ccc" }, { "code": "hjj", "display": "uii" }] }] } } var output = []; obj.define.concept.forEach(function(o) { output = output.concat(o.concept) }); document.write("<pre>" + JSON.stringify(output, 0, 4) + "</pre>"); 

使用Array#forEach()解決方案。

 var data = { "id": "111", "name": "v5", "define": { "system": "abc", "concept": [{ "code": "y7", "concept": [{ "code": "AGG", "display": "Abcess" }, { "code": "ABS", "display": "Abcess" }] }, { "code": "y8", "concept": [{ "code": "AGc", "display": "ccc" }, { "code": "hjj", "display": "uii" }] }] } }, flat = function (array) { var r = []; array.forEach(function (a) { a.concept.forEach(function (b) { r.push(b); }); }); return r; }(data.define.concept); document.write('<pre>' + JSON.stringify(flat, 0, 4) + '</pre>'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM