0

在 JavaScript 中有一些问题要问。

我有一个数据结构。像这样的一些事情:

var Data = 
{
    head:    ["ID", "Name", "Age"],
    rows: [
             ["0", "Bob", "23"],
             ["1", "Sam", "24"],
             ["2", "Tom", "25"]
             // and so on
          ]
}

我有一个处理这些数据的函数。该函数必须处理for..in语句中的行字段。

$scope.someDate = $filter('filter')($scope.data.rows, function (item) {
  for(var val in item) {
     // some logic...
   }
   // some logic...
});

问题如下。在 FOR 循环中,它没有给我 3 个属性(根据数据格式),而是给了我 4 个。第四个属性是哈希键。因此我有问题。有人知道如何修复、修改或绕过这个吗?

4

1 回答 1

1

在您的情况下,rows是一个数组数组。行的每个元素(这是一个数组)都将传递给item. 现在, item 是一个数组。根据这个例子,

var Data = 
{
    head:    ["ID", "Name", "Age"],
    rows: [
             ["0", "Bob", "23"],
             ["1", "Sam", "24"],
             ["2", "Tom", "25"]
             // and so on
          ]
};

Data.rows.forEach(function(item) {
    console.log(item);
})

将打印

[ '0', 'Bob', '23' ]
[ '1', 'Sam', '24' ]
[ '2', 'Tom', '25' ]

现在,如果我们必须处理这个数组的每一个元素item,我们就必须遍历它。

Data.rows.forEach(function(item) {
    for (var i = 0, len = item.length; i < len; i += 1) {
        console.log(item[i]);
    }
})

现在,这将打印

0
Bob
23
1
Sam
24
2
Tom
25

注意:不要用于for..in迭代数组。请阅读此答案以获取详细说明https://stackoverflow.com/a/500531/1903116

于 2013-09-29T18:10:09.287 回答