【问题标题】:Accessing element of an perl Array element访问 perl 数组元素的元素
【发布时间】: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 列,列标题名称为IdNameCommenttype。所有这些数据都在@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 自己进行编码。

标签: arrays perl


【解决方案1】:

基于your previous question 的答案,我认为您只需要在最后换掉循环即可:

my $json = encode_json($data);
print "var data = $json;\n";

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2013-11-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多