在JavaScript中提出一些问题。
我有一个数据结构。有点像这样:
var Data =
{
head: ["ID", "Name", "Age"],
rows: [
["0", "Bob", "23"],
["1", "Sam", "24"],
["2", "Tom", "25"]
// and so on
]
}
我有一个处理这些数据的函数。此函数必须处理for..in
语句中的rows-field。
$scope.someDate = $filter('filter')($scope.data.rows, function (item) {
for(var val in item) {
// some logic...
}
// some logic...
});
问题如下。在FOR-loop而不是给我3个属性(根据数据格式)它给了我4.第四个属性是散列键。因为这个我有问题。 有人知道如何修复,修改或绕过它吗?
答案 0 :(得分: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