首页 > 解决方案 > Javascript - 尝试使用 Array.lenght 访问 foreach 循环中每个数组的最后一个元素

问题描述

我需要显示来自数组的用户文本消息的预览。如果我硬编码循环中的数字,我很容易实现这一点。它有效,但并不漂亮。一个更漂亮的解决方案是显示最后接收或发送的文本消息。我这样做的尝试Array.Length失败了,因为并非所有用户都有相同数量的短信。如果一个用户有 4 条消息和另外 2 条消息,那么在遍历消息较少的用户时会导致未定义的错误。如何才能做到这一点?

txt.details[0].message //works but not pretty

功能

function getSMS(){
usersms.forEach(function (txt,counter) {
//
//
//get total number of msgs per user
var usertxtarray = txt.details;
var length = (usertxtarray).length;
console.log('msgs per user : ' + length);//prints 2, 2, 4

//display sms preview
var sms = (txt.details[length].message).substring(0,35) + '...';

//etc... 

});
}

这是(txt.details)看起来的样子

[
  {
    "direction": "from",
    "user": {
      "id": "23",
      "avatar": "myavatar.jpg",
      "first_name": "Jane",
      "last_name": "Doe",
    },
    "message": "Lorem ipsum dolor sit amet,  consectetur adipiscing elit",
    "smsid": "2220",
    "date": "202-12-29",
    "time": "12:00",
    "timezone": "Eastern Standard Time"
  },
  {
    "direction": "to",
    "user": {
      "id": "23",
      "avatar": "myavatar.jpg",
      "first_name": "Jane",
      "last_name": "Doe",
    },
    "message": "Lorem ipsum dolor  sit amet, consectetur adipiscing elit",
    "smsid": "2220",
    "date": "2021-01-05",
    "time": "09:00",
    "timezone": "Eastern Standard Time"
  }
]

​</p>

标签: javascriptarraysforeach

解决方案


数组是零索引的。

因此,如果您的长度 = 4,那么您的最后一项在索引 3 处。

所以 ...

var sms = txt.details[length - 1].message.substring(0, 35) + '...';

会给你最后一条消息。


推荐阅读