[英]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.