【发布时间】:2015-09-03 03:02:41
【问题描述】:
我有一个读取 csv 文件的 perl 代码。它包含需要在前端更新的grid 数据。
首先,这里是读取数据并格式化数据的 perl 代码,以便将数据推送到前端进行显示。
my @array;
for my $column ($csv->column_headers) {
my $json = encode_json([ map { $_->{$column} } @$data ]);
push(@array, "$json;");
}
最终的数据是@array,它被传递给前端javascript代码。 @array的内容如下。
["1","2"]; ["dd","ddd"]; ["wow","cool"]; ["HOLD","HOLD"];
此数据实际上是4 列,列标题名称为Id、Name、Comment 和type。所有这些数据都在@array 中捆绑在一起并传递给Javascript。
var header=[];
header[0] = @array[0];
}
如果我执行console.log(header[0]),上面的代码会显示以下输出;这意味着它正在显示数组的第一个元素。但我想显示第一个元素的元素。
["1", "2"]
而它应该显示在输出下方。
["1"]
简而言之,我想知道如何访问数组元素元素。我尝试使用下面的代码,但没有奏效。有人可以建议吗?
var header=[];
header[0] = @array[0][0];
我最终尝试使用以下代码将这些数据放入网格中。
for (var i=0;i<row_cnt;i++){
var row={};
row["Id"]=Id[i];
row["Name"]=Name[i];
row["Comment"]=Comment[i];
row["type"]= type[i];
data[i]=row;
}
其中Id[i] 将对应于第一个循环中的"1" 和第二个循环中的"2"。同样,它将为其他列生成数据。然后将它们分配给行并在网格中更新。
根据 matts 的建议,我编辑了这样的代码
my $json = encode_json($data);
for my $column ($csv->column_names) {
push(@data_array, "var $column= $json;");
}
现在它在grid 的每个单元格中显示以下值。
[object Object]
【问题讨论】:
-
如果我从您之前的帖子中没记错的话,您的数据不是已经采用表格 (CSV) 格式了吗?无论您在这里得到什么,都是一种表示表格数据的奇怪方式,我建议您重新考虑您的数据结构。你最终想在这里做什么?
-
@MattJacob- 是的,我认为结构很奇怪。 :( 我已经用我最终想要实现的目标更新了我的问题。
-
我认为你想要的是一个对象数组。我会先在 Perl 中构建它,然后将整个东西编码为 JSON。实际上,
getline_hr_all(来自your other question)可以让你到达那里的 99%。在返回值上调用encode_json,Bob 就是你的叔叔。 -
@MattJacob- 我尝试了这一点,因为我知道我越来越近了。我在整体价值上尝试了 encode_json 函数。即我的 $json = encode_json([ map { $_->{$column} } @$data ]);在此声明之后,我再次编写了 encode_json ,但它没有用。也许我没有正确编码。你能把答案贴在这里吗?
-
去掉循环、
map和数组引用,只对$data自己进行编码。