如何使用Angular在数组中按键和值

时间:2016-12-13 16:59:05

标签: javascript angularjs

我想根据用户提供的行数和列数来过滤数据。

我在读取此excel文件后获取控制器上的数据:

enter image description here

这是我在用户传递5作为输入列后得到的列标题值: enter image description here

这是我在用户给出4行作为要渲染的输入后得到的行数据,这里有4行数据: enter image description here

在每一行中,都有包含列名和单元格值的键值对:

enter image description here

我想根据通过列的标题名称过滤此行数据,以便该行只有值,直到定义列。目前我正在获得整行值。

我写过这样的逻辑,但这不起作用。

var rowData=[];
for(var i=0;i<headerNames.length;i++){//headerNames contains column names
   for(var j=0;j<data.length;j++){//data contains the rows data
      for(var keyName in data[j])
        if(angular.equals(keyName,headerNames[i])){
           rowData.push({'keyName':data[j][keyName]})//I want only the key,values which matches the column names. I want to set the keyName value as array key but I am not getting its value instead it is coming like keyName:18
        }
      }
   }
}

为代码添加plunker。 http://plnkr.co/edit/28Z44xDBug7nFCQnKZJL?p=preview

我能够在UI上过滤数据,并根据用户输入仅获取行和列数据。 但我需要控制器上的相同数据,以便我可以将其保存在MongoDb中。我想根据列输入过滤行数据。所以,我只得到行数据,直到列定义。

请建议我如何过滤数据并且可以拼接行值,以便在行i中可以具有最多定义的列数的值。例如,如果我用户输入了4行和5列,那么在我的行Data中,我只能拥有最多5列的值以及我可以从数组中删除的所有其他值。在我的代码中,我目前无法将键值设置为数组键。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

看起来你大部分都在那里。您只需要将rowData指定为$ scope.rowData,以便angular可以访问它,并使Angular文档显示{{rowdata}}(显示$ scope.rowData)。

您可能需要将其排列到列中,因此您可以对rowData执行ng-repeat,使用variable = row,并在TR TD标记中显示row.1

例如..

<tr ng-repeat="row in rowData">
<td>{{row.1}}</td>
<td>{{row.2}}</td>
</tr>