我有一些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
您期待的结果是什么?您可以将其分解为一小段有相同问题的数据? –