我正在接收JSON数组,将其展平以将其显示为表,但是我使用的这种逻辑有一个缺陷,如果我的对象具有相同的列名,它将忽略它,并且只会添加找到的第一列。

我要解决的问题

将嵌套对象显示在平面表中

问题我被困在

我想将对象的名称添加到列标题中,目前还没有发生。

javascript - 如何将对象名称添加到表列-LMLPHP


我认为问题在这里

  function flattenRecord(result, rec) {
    return Object.keys(rec).reduce(function(result, key) {
      var value = rec[key];
      if (value && typeof value === 'object')
        flattenRecord(result, value);
      else
        result[key] = value;  // How to add key here so that it will be added to column header ?
      return result;
    }, result);
  }


完整的代码和工作示例

https://jsfiddle.net/1tsu6xt9/14/

最佳答案

我已经解决了这个问题,不得不更改怀疑的扁平化JSON的逻辑,

将FlattenRecord方法更改为以下方法,

  function flattenRecord2(data) {
    var result = {};

    function recurse(cur, prop) {
      if (Object(cur) !== cur) {
        result[prop] = cur;
      } else if (Array.isArray(cur)) {
        for (var i = 0, l = cur.length; i < l; i++)
          recurse(cur[i], prop);
        //if (l == 0)
          //result[prop] = [];
      } else {
        var isEmpty = true;
        for (var p in cur) {
          isEmpty = false;
          recurse(cur[p], prop ? prop + "." + p : p);
        }
        if (isEmpty && prop)
          result[prop] = {};
      }
    }
    recurse(data, "");
    return result;
  }


还有下面一行

  var rows = testData.reduce(function(rows, row) {
    return appendRow(rows, flattenRecord2(row));
  }, []);

关于javascript - 如何将对象名称添加到表列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37542437/

10-11 22:26
查看更多