Jquery 排除特定数组的一种方法
我有一个项目,我正在制作一个虚拟电话,我需要删除特定的阵列,但我想不出一个方法来做到这一点 目前我还没有找到方法来做这件事,我想在我只从数据库中获取具体信息的地方做这件事,但在打开聊天信息时会给som带来“加载”问题。因此,我想从特定用户中取出所有聊天记录,然后在数组中删除Jquery 排除特定数组的一种方法,jquery,arrays,sorting,Jquery,Arrays,Sorting,我有一个项目,我正在制作一个虚拟电话,我需要删除特定的阵列,但我想不出一个方法来做到这一点 目前我还没有找到方法来做这件事,我想在我只从数据库中获取具体信息的地方做这件事,但在打开聊天信息时会给som带来“加载”问题。因此,我想从特定用户中取出所有聊天记录,然后在数组中删除 var getmessages = [ { sender: "114-5437", receiver: "545-3169", sende
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 () {
});
当我的数据进入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 () {
});
我希望我解释得很好,而且有道理。谢谢这就是过滤器的用途
var getmessages=[
{
发件人:“114-5437”,
接收者:“545-3169”,
发送者信息:“Hejsa!!!”,
接收器读数:0,
日期:“2019-04-1022:14:34”
},
{
发送者:“545-3169”,
接收者:“114-5437”,
发送者信息:“Hejsa!!!”,
接收器读数:0,
日期:“2019-04-1022:14:34”
},
{
发送者:“545-3169”,
收件人:“999-5435”,
发送者信息:“Hejsa!!!”,
接收器读数:0,
日期:“2019-04-1022:14:34”
},
{
发送者:“545-3169”,
接收者:“114-5437”,
发送者信息:“Hejsa!!!”,
接收器读数:0,
日期:“2019-04-1022:14:34”
},
];
console.log(getmessages.filter(item=>item.sender==“114-5437”| | | item.sender==“545-3169”| | item.receiver==“114-5437”| | item.receiver==“545-3169”)代码>如果使用$。每个
,函数接受两个参数-索引
和值
。索引
是数组中对象的索引,而值
是对象本身。然后,您可以查看value.sender
或value.receiver
并与您不需要的数字进行比较,如果其中一个匹配,则应该删除该对象,类似于getmessages.splice(index,1)
将其从数组中删除。我知道了,我应该将.splice放在哪里?之前、之后或美元中。每个?:)感谢您的快速回复。您可以保留一个数组/一组发送方
或接收方
编号,然后通过$与您的数组进行比较。每个
都可以在循环中删除该索引。例如-$.each(getmessages,函数(索引,值){if(setOfNumbers.has(getmessages[index].sender)){getmessages.splice(索引,1)})
@ThomasMacédo如果您使用过滤器,它将允许您缩小用例范围。它循环数组一次,因此这是一种在不改变基本数据集的情况下对数组进行转换的简单方法。这种方法非常有效,以前从未使用过。谢谢:)将对此进行更多研究。我建议将您要比较的字符串定义为数组。这样,它可以以一种干净的方式扩展。然后您可以使用:arr.includes(item.sender)代码>