【问题标题】:Javascript lodash flatten hierarchical objectJavascript lodash 展平分层对象
【发布时间】:2016-06-20 19:43:45
【问题描述】:

我有分层 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"
}]

【问题讨论】:

  • "如果没有,是否有其他库可以做到这一点?"。 Stack Overflow 上不允许请求异地资源。

标签: javascript angularjs json node.js lodash


【解决方案1】:

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>');

【讨论】:

    【解决方案2】:

    在 lodash 中有没有办法将这个 json 扁平化为“代码”数组, 仅显示”?

    你的意思是连接所有conceptchilds?

    试试这个

    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>");

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2017-10-19
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多