我的数据如下:
{
meta: {
format: "csv",
info: "desc",
columns: [
{
id: "Name",
type: "Text",
length: 32
},
{
id: "Text",
type: "Text",
length: 128
}]
},
rows: [
["John","xxxx"],
["Alpha","yyyy"],
["Beta","wwww"],
["Gamma","zzzz"]]
}
现在,我正在努力将记录映射到Table
控件Columns
和Rows
。列似乎是直截了当,直接映射,但行由于缺少映射到列我想知道什么是最简单的方法。
接近步骤:
keys[]
创建column.id
。rows[]
keys.length
创建一个对象{keys[j]:row[k]}
JSON
,但将Rows
数组替换为Objects
我真的很难将其转换为代码,特别是在rows[]
解析和创建对象时。是的,我相信必须有一种有效的方法来实现这一目标。
答案 0 :(得分:1)
这是你能做的。使用Array.map和forEach。
var input = {
meta: {
format: "csv",
info: "desc",
columns: [{
id: "Name",
type: "Text",
length: 32
}, {
id: "Text",
type: "Text",
length: 128
}]
},
rows: [
["John", "xxxx"],
["Alpha", "yyyy"],
["Beta", "wwww"],
["Gamma", "zzzz"]
]
};
var columns = input.meta.columns.map((column) => {
return column.id
});
var rows = input.rows.map((row) => {
var obj = {};
row.forEach((column, idx) => {
obj[columns[idx]] = column;
});
return obj;
});
input.rows = rows;
console.log(input);