数组给我'无法读取未定义的属性'但是console.logs显示其他的

时间:2017-11-13 03:49:09

标签: javascript arrays console

我正在尝试一种方法来处理一组消息,每条消息都有一个用户发送消息的id和meesage本身的内容。

一旦我获得了数组,我尝试将发送它的用户分开消息(以便稍后根据用户设置消息的样式)。

我尝试使用 for循环来读取数组,然后使用 if 来检查记录的用户是否发送了此类消息。

当我想阅读发送邮件的人时,会弹出问题。

起初我以为“我可能会写错了句子”,所以我使用了一些 consol.logs 来查看错误。我得到了一个有趣的情况:变量在控制台上正确显示,但是一旦我想评估 if ,我就会收到错误。

这是我正在运行的JavaScript代码

function processMeesages(allMessages) {

  for (var i = 0; i <= allMessages.length; i++) {

    console.log('allMessages[' + i + '].userMsg', allMessages[i].userMsg)

    //Message from the logged user
    if (allMessages[i].userMsg == user.id) {
      chatMessages += '<div class="row ">' +
              '            <div class="col col-10 "></div>' +
              '            <div class="col card owner-container">' +
              '                <div class="item item-text-wrap owner">' +
                                  allMessages[i].contenido +
              '                </div>' +
              '            </div>' +
              '        </div>';
    }

    //Messages from the other user
    else {
      chatMessages += '<div class="row ">' +
              '            <div class="col card message-container">' +
              '                <div class="item item-text-wrap message">' +
                                  allMessages[i].contenido +
              '                </div>' +
              '            </div>' +
              '            <div class="col col-10 "></div>' +
              '        </div>';
    }
  }

  //Once the for loop ends (What's down didn't show up on the console)
  $rootScope.chatMessages = chatMessages;
  console.log('chatMessages', chatMessages)
  console.log('rootscopeChatMessages', $rootScope.chatMessages)
}

Here's an image with what i get in the console and what the array haves inside (I put some labels on the picture)

1 个答案:

答案 0 :(得分:0)

好像你正在循环超过要求。您的数组只有两个元素,但您的for循环尝试循环3次,因此导致访问错误,因为allMessages[2]未定义。

function processMeesages(allMessages) {

  for (var i = 0; i < allMessages.length; i++) {

    console.log('allMessages[' + i + '].userMsg', allMessages[i].userMsg)

    .
    .
    .
    .
}