javascript - 数组分组和排序
问题描述
我想要实现的是一个消息应用程序,在您选择所需的消息对话之前,您会看到您收到的所有最近消息的列表,以及您收到/发送的最新消息的预览。
82784
问题是我的脚本遍历数组并发布所有结果,我想要做的是它将我的电话号码(列出他们name
应该是他们的电话号码。
我添加了两个数组,我的联系人和发送的消息。以及它的外观和外观的两张图像。
联系人数组
contacts = {
[1] = {contact_name = "Rudolf Albinsson", contact_number = "32682"},
[2] = {contact_name = "Svea Engström", contact_number = "94784"},
[3] = {contact_name = "Theodor Sylvia", contact_number = "45270"},
[4] = {contact_name = "Kai Catrine", contact_number = "12527"}
},
消息数组
messages = {
[1] = {message_sender = 32682, message_sender_name = "Rudolf Albinsson", message_receiver = 82784, message_receiver_name = "Ivanov Valkov", message_message = "Test 1", message_read = "0", message_datestamp = "2018-06-09 05:45:49"},
[2] = {message_sender = 32682, message_sender_name = "Rudolf Albinsson", message_receiver = 82784, message_receiver_name = "Ivanov Valkov", message_message = "Test 2", message_read = "0", message_datestamp = "2018-06-09 05:46:12"},
[3] = {message_sender = 82784, message_sender_name = "Ivanov Valkov", message_receiver = 32682, message_receiver_name = "Rudolf Albinsson", message_message = "Test 3", message_read = "0", message_datestamp = "2018-06-09 05:47:46"},
[4] = {message_sender = 82784, message_sender_name = "Ivanov Valkov", message_receiver = 32682, message_receiver_name = "Rudolf Albinsson", message_message = "Test 4", message_read = "0", message_datestamp = "2018-06-09 05:48:01"},
[5] = {message_sender = 32682, message_sender_name = "Rudolf Albinsson", message_receiver = 82784, message_receiver_name = "Ivanov Valkov", message_message = "Test 5", message_read = "0", message_datestamp = "2018-06-09 05:48:36"},
[6] = {message_sender = 62649, message_sender_name = "Hamid Hamdi", message_receiver = 82784, message_receiver_name = "Ivanov Valkov", message_message = "Test 6", message_read = "0", message_datestamp = "2018-06-09 05:48:55"},
},
代码
for(let i = 0; i < PlayersData.messages.length; i++){
if(PlayersData.messages[i].message_receiver == PlayersData.phone && PlayersData.messages[i].message_sender == contact_number){
Contacts.find("ul.messages").append('<li class="contact">'+ PlayersData.messages[i].message_message +'</li>');
}else if(PlayersData.messages[i].message_receiver == contact_number && PlayersData.messages[i].message_sender == PlayersData.phone){
Contacts.find("ul.messages").append('<li class="me">'+ PlayersData.messages[i].message_message +'</li>');
}
}
解决方案
这是一个可以帮助您的代码。您必须通过替换 console.log 行来更改显示数据的方式。
const handledSendersNumbers = []
// We run over all messages
for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex--) {
const message = messages[messageIndex]
// We check that the number of the sender has not been handled yet
// If it's not the case we have to display his message
if (handledSendersNumbers.indexOf(message.message_sender.toString()) === -1) {
// We look for a contact corresponding to the sender number
let foundContact
for (const contact of contacts) {
if (contact.contact_number === message.message_sender.toString()) {
foundContact = contact
break
}
}
if (foundContact) { // if a contact has been found, we display his name and the message
console.log(foundContact.contact_name, message.message_message)
} else { // if no contact has been found, we display his number and the message
console.log(message.message_sender, message.message_message)
}
// We add the number of the sender to the liste of handled numbers
handledSendersNumbers.push(message.message_sender.toString())
}
}
推荐阅读
- java - Spring Cloud Kubernetes - 用户“system:serviceaccount:my-namespace:default”无法在集群范围内列出 API 组“”中的资源“服务”
- ruby-on-rails - 在 Ruby on Rails 中动态调用控制器操作
- ruby - 如何在更新到 Sequel 单表继承 (STI) 行期间重新加载 sti_key 列更改的记录
- java - 如何用 Java (.dat) 制作本地 SQL 数据库?
- angular - Mapbox 街道地图不适合屏幕大小
- r - 获取 R 中的第一个非零数字,类似于 Mathematica
- c# - 为什么我的计数谷问题的解决方案会超时?
- python - 如何只获取使用过的 pip 包?
- vue.js - axios和sequelize通信
- python - 使用 BeautifulSoup 在 Python 中删除不需要的标签