我有一些JSON數據,我試圖通過使用一些嵌套for循環來處理。我得到的結果並不是我所期望的。這裏是我開始有:爲什麼我得到一個奇怪的結果嵌套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
}
]
}
]
我在做什麼錯?
另外,這不是JSON,它是一個對象數組。 JSON是用於序列化和數據傳輸的字符串格式。 (你的代碼使用JSON.stringify(data)記錄到控制檯的結果是JSON。) – nnnnnn
我認爲這些數組中的一些元素是錯誤的:有兩個名爲「items」的「items」屬性:即,日期「:」2016-01-16T05:00:00.000Z「, 」items「:[], 」items「:0 – alexandergs
您期待的結果是什麼?您可以將其分解爲一小段有相同問題的數據? –