javascript - 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>
解决方案
数组是零索引的。
因此,如果您的长度 = 4,那么您的最后一项在索引 3 处。
所以 ...
var sms = txt.details[length - 1].message.substring(0, 35) + '...';
会给你最后一条消息。
推荐阅读
- wordpress - 通过 add_action 传递变量
- python - 将字符添加到 csv 文件中的行
- java - 将字节数组转换为字符串 ascii 编码
- ruby-on-rails - 如何为调用 Ruby on Rails 中的可选多态关系提供虚拟值?
- dialogflow-es - Google 助理在 Dialogflow 中重复上一条消息时遇到问题
- javascript - 将文件夹上传到 GDrive 并获取用于上传文件的文件夹 ID
- java - 如何使用带有一个通用字符串的 Java 程序拆分文件?
- html - 如何使 Simplegrid CSS 网格居中
- javascript - Vuetify 多行标签
- weblogic12c - config.xml 是在创建域之后创建还是在 Weblogic 中首次启动管理服务器时创建?