我正在接收JSON数组,将其展平以将其显示为表,但是我使用的这种逻辑有一个缺陷,如果我的对象具有相同的列名,它将忽略它,并且只会添加找到的第一列。
我要解决的问题
将嵌套对象显示在平面表中
问题我被困在
我想将对象的名称添加到列标题中,目前还没有发生。
我认为问题在这里
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/