I have some JSON data that I'm attempting to process by using some nested for loops. The result I'm getting is not what I would expect. Here is what I'm starting with:
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
}
]
}
]
Now, here is the code I'm using to process the above 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);
What I'm expecting is that item_count
will contain an integer representing the number of items for the current user (given by data[i].user_id
). Instead, here is what I'm getting:
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
}
]
}
]
What am I doing wrong?
I ran your code and the results is right. You might have a cache problem or something like that:
<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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.