为什么我在嵌套的循环中得到一个奇怪的结果
Why am I getting a strange result with nested for loops?
我有一些JSON数据,我试图通过使用一些嵌套的for循环来处理这些数据。我得到的结果不是我所期望的。这是我的开始:
data = [
{
"user_id": "54036a265b2fa765099af857",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
}
]
现在,这是我用来处理上述 JSON 的代码:
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].days.length; j++) {
for (var k = 0; k < data[i].days[j].items.length; k++) {
if (data[i].user_id === data[i].days[j].items[k].user_id) {
data[i].days[j].item_count++;
}
}
}
}
console.log('result = ' + JSON.stringify(data);
我期望的是item_count
将包含一个整数,表示当前用户的项目数(由 data[i].user_id
给出(。相反,这是我得到的:
result = [
{
"user_id": "54036a265b2fa765099af857",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 1
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 4
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 1
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 4
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 1
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 4
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
}
]
我做错了什么?
我运行了你的代码,结果是正确的。您可能遇到缓存问题或类似问题:
<html>
<head>
<script>
var data = [
{
"user_id": "54036a265b2fa765099af857",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5589fdbbe1231a40765a71fe",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"days": [
{
"date": "2016-01-14T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-01-15T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "5608a7b0488505351891c91f"
}
],
"item_count": 0
},
{
"date": "2016-01-16T05:00:00.000Z",
"items": [],
"item_count": 0
},
{
"date": "2016-02-08T05:00:00.000Z",
"items": [
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "54036a265b2fa765099af857",
"item_id": "56b26ff70ac237b50d061578"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b119409736e0086c37ed0a"
},
{
"user_id": "5403cffdbd73cc4e0b49bda7",
"item_id": "56b26ff70ac237b50d061578"
}
],
"item_count": 0
},
{
"date": "2016-02-09T05:00:00.000Z",
"items": [],
"item_count": 0
}
]
}
];
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].days.length; j++) {
for (var k = 0; k < data[i].days[j].items.length; k++) {
if (data[i].user_id === data[i].days[j].items[k].user_id) {
data[i].days[j].item_count++;
}
}
}
}
console.log('result = ' + JSON.stringify(data));
</script>
</head>
<body>
</body>
</html>
相关文章:
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 使用NextToken使用javascript aws-sdk解析下一个结果
- Angular.forEach 只返回一个结果
- 谷歌地图商店定位器只返回一个结果
- .each() 函数只输出数组中的最后一个结果
- 如何通过PHP或JavaScript将整个DIV数据发送到下一个结果页面
- 将一个结果集除以另一个结果集,然后显示答案
- foreach 只产生一个结果
- 查找主干集合上的位置仅返回一个结果
- 插入数据库时如何从数据库中检索最后一个结果
- 在 JavaScript 中添加表值会在 NaN 的表单元格中给我一个结果
- 如何将一个结果列表合并到一个包含汇总的压缩对象中
- java脚本regex.match只查找一个结果
- 输出一个结果数组,其中包含给定数组的唯一元素的分组计数
- 从XML文件中隔离一个结果
- 骨干收集发现我只想要一个结果
- 我需要用AJAX Post声明一个结果类型吗
- 在另一个结果中的单选按钮
- 我试图从一个函数内的函数返回一个结果
- 在Javascript页面中搜索-一个结果错误