【发布时间】:2019-09-09 05:43:44
【问题描述】:
我有一个项目,我正在制作一个虚拟电话,我需要删除特定的数组 - 但我想不出办法。
目前我还没有找到方法来做到这一点,我考虑过这样做,我只能从数据库中获取特定信息,但在打开聊天消息时可能会出现“加载”问题。因此,我想从特定用户中提取所有聊天,然后在数组中删除
当它进入我的 jquery 时,我的数据将如下所示
var getmessages = [
{
sender: "114-5437",
receiver: "545-3169",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
{
sender: "545-3169",
receiver: "114-5437",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
{
sender: "545-3169",
receiver: "999-5435",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
{
sender: "545-3169",
receiver: "114-5437",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
];
$.each(getmessages, function () {
});
所以我想在这里删除所有不是我需要的信息的数组
在这种情况下,我希望每个数组元素都有
发送者/接收者为 114-5437 和/或发送者/接收者为 545-3169
所以它应该在数组中看起来像这样
var getmessages = [
{
sender: "114-5437",
receiver: "545-3169",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
{
sender: "545-3169",
receiver: "114-5437",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
{
sender: "545-3169",
receiver: "114-5437",
sender_msg: "Hejsa!!!",
receiver_read: 0,
date: "2019-04-10 22:14:34"
},
];
$.each(getmessages, function () {
});
我希望我解释得很好并且有意义。谢谢
【问题讨论】:
-
如果使用
$.each,该函数接受两个参数-index和value。index是数组中对象的索引,而value是对象本身。然后,您可以查看value.sender或value.receiver并与您不需要的数字进行比较,如果其中一个匹配,则应删除该对象,例如getmessages.splice(index, 1)将其从数组中删除。 -
我明白了,我应该把 .splice 放在哪里?在 $.each 之前、之后还是在 $.each 中? :) 感谢您的快速回复
-
您可以保留
sender或receiver数字的数组/集合,然后通过$.each与您的数组进行比较,并在循环中删除该索引。例如 -$.each(getmessages, function(index,value){ if(setOfNumbers.has(getmessages[index].sender)){ getmessages.splice(index,1) }}); -
@ThomasMacédo 如果您使用过滤器,它将允许您缩小用例。它循环数组一次,因此它是一种在不更改基本数据集的情况下对数组进行转换的简单方法。