代码中问题的描述。为什么会这样?
email
UPD。我添加了临时变量,它可以正常工作。
var response = JSON.parse(xhr.responseText);
console.log(response[0].conversationUsers.length); //OK, console outputs "2"
for (i = 0; i < response.length; i++) {
for (j = 0; j < response[i].conversationUsers.length; j++) { //Error 'cannot read property', but it has to be interpreted "j = 0; j < 2; j++" and it worked in console.log
...
}
}
问题可以解决,但是有什么想法可以解决?
答案 0 :(得分:0)
您仅将console.log()
用于该数组中的第一个对象。我建议您尝试:
var response = JSON.parse(xhr.responseText);
for (i = 0; i < response.length; i++) {
console.log(response[i].conversationUsers); // should be an array
for (j = 0; j < response[i].conversationUsers.length; j++) {
...
}
}
如果您在控制台中看到任何undefined
,则表示您已确定问题所在。
问题在于,对于数组response[0].conversationUsers
中的第一个元素,其值是一个数组。对于该数组中的每个元素可能都不是正确的,因此其中某些元素可能没有length属性。
答案 1 :(得分:-4)
您正在尝试迭代内部length属性。尝试去掉长度。像这样
var response = JSON.parse(xhr.responseText);
console.log(response[0].conversationUsers.length);
for (i = 0; i < response; i++) {
for (j = 0; j < response[i].conversationUsers; j++) {
...
}
}