【发布时间】:2014-02-21 23:26:29
【问题描述】:
我在这方面已经有一段时间了,但似乎无法理解。我对 javascript 也比较陌生。我的目标是创建一个具有以下格式的数组(或新的 javascript 对象)
{
data:{
[A1:"first column first row", B1:"second column", C1:"third column",...etc],
[A2:"first column first row", B2:"second column", C2:"third column",...etc],
[A3:"first column first row", B3:"second column", C3:"third column",...etc],
[A4:"first column first row", B4:"second column", C4:"third column",...etc],
[A5:"first column first row", B5:"second column", C5:"third column",...etc]
}
}
这可能与 excel 如何使用行和列进行格式化密切相关。我计划使用它来提供 handsontable 以供客户端操作此数据。
我目前拥有的是
var file = __dirname + '/../../clientFiles/exceltest.json';
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
sails.log.error('ERROR: ' + err);
return;
}
data = JSON.parse(data);
var rows = Object.keys(data);
rows.forEach(function(column) {
var items = Object.keys(data[column]);
items.sort();
items.forEach(function(item) {
var value = data[column][item];
console.log(item+' = '+value);
});
});
});
键名永远不会少于 2 个字符,但可以像在 excel 中一样增加大小(例如 A1 => AAA1)。
网页脚本是
<div id="dataTable"></div>
<script>
$("#dataTable").handsontable({
data: <%= data %>,
startRows: 6,
startCols: 8,
rowHeaders: true,
colHeaders: true,
});
</script>
我正在提取的 json 格式如下
{
"sheet1": {
"F15": "4,385.97",
"G15": "910.36",
"H15": "1,555.36",
"I15": "373.74",
"J15": "24.03%",
"K15": "58.53%",
"L15": "61",
"M15": "669",
"N15": "216665",
"B16": "01/14/2014",
"D16": "829",
"E16": "12,997.13",
"F16": "531.85",
"G16": "225.48",
"H16": "359.21",
"I16": "80.21",
"J16": "22.33%",
"K16": "62.77%",
"L16": "55",
"M16": "99",
"N16": "45384",
"B17": "01/14/2014",
"D17": "320",
"E17": "6,142.45",
"F17": "1,643.42",
"G17": "129.76",
"H17": "215.90",
"I17": "41.09",
"J17": "19.03%",
"K17": "60.10%",
"L17": "111",
"M17": "182",
"N17": "35485",
"D18": "13478",
"E18": "94,735.05",
"F18": "6,663.08",
"G18": "1,689.97",
"H18": "3,054.92",
"I18": "839.16",
"J18": "27.47%",
"K18": "55.32%",
"L18": "29",
"M18": "996",
"N18": "396396"
},
"sheet2": {
"F15": "4,385.97",
"G15": "910.36",
"H15": "1,555.36",
"I15": "373.74",
"J15": "24.03%",
"K15": "58.53%",
"L15": "61",
"M15": "669",
"N15": "216665",
"B16": "01/14/2014",
"D16": "829",
"E16": "12,997.13",
"F16": "531.85",
"G16": "225.48",
"H16": "359.21",
"I16": "80.21",
"J16": "22.33%",
"K16": "62.77%",
"L16": "55",
"M16": "99",
"N16": "45384",
"B17": "01/14/2014",
"D17": "320",
"E17": "6,142.45",
"F17": "1,643.42",
"G17": "129.76",
"H17": "215.90",
"I17": "41.09",
"J17": "19.03%",
"K17": "60.10%",
"L17": "111",
"M17": "182",
"N17": "35485",
"D18": "13478",
"E18": "94,735.05",
"F18": "6,663.08",
"G18": "1,689.97",
"H18": "3,054.92",
"I18": "839.16",
"J18": "27.47%",
"K18": "55.32%",
"L18": "29",
"M18": "996",
"N18": "396396"
}
}
我正在为我的框架和引擎使用sails 和nodejs。我已经能够对键进行排序,但是对它们进行分组却让我望而却步。如果需要,我可以使用 underscorejs。
提前致谢。
【问题讨论】:
-
你在顶部展示的数据结构没有多大意义,你定义一个像哈希一样的数组,然后一个包含数组的哈希......?
-
@htatche 是对的;您显示的结构不是有效的 JSON。此外,目前还不清楚您正在寻找什么样的分组。你在底部粘贴的 JSON 数据被分成了工作表,每个工作表都有相同的行和列,但是你在顶部指定的结构每行有一个数组...
-
确认:您希望对数据进行分组,以便每一行由一个数组表示,并且该数组中的值表示该行中每一列的值?那么,您希望将所有“A*”键放在同一个数组中,将所有“B*”键放在另一个数组中,等等?
-
@htatche - 我在原始帖子中修复了 json,我输入了错误的字符。
-
@Kyle - 你是对的。我正在用 xlsjs 解析一个 excel 工作簿并创建了上面的 json。键实际上是 excel 字段(例如,a 列,第 1 行)。使用handsontable 我想在页面上显示这个json。问题是动手表需要数组 ([[a1,b1,c1],[a2,b2,c2]]) 和对象 ([{a1:1},{b1:2},{c1 :3}])。以逗号([] 或 {},)分隔的每个数组 [] 或对象 {} 在可动手操作的网格中开始一个新行。
标签: javascript json node.js underscore.js sails.js