如何删除Javascript数组中的重复对象属性

如何删除Javascript数组中的重复对象属性,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我和其他不同的用户之间有一个消息数组,我试图筛选该数组,使其只包含一个用户的单一事件(例如,在该数组中,我和John之间有10条消息,其中我是发送者或接收者),我试图获得一个只包含John的单一事件的新数组,最新消息(无论是约翰作为发送者还是接收者)。我和Jane之间也有两条消息(一条是我发送的,另一条是我接收的),我希望我和Jane之间也只有一条消息 最后,我试图得到一个包含三条消息的数组 -一个是托马斯 -一个是简 -一个是约翰 如果有人有解决方案,请分享 [ { "_id

我和其他不同的用户之间有一个消息数组,我试图筛选该数组,使其只包含一个用户的单一事件(例如,在该数组中,我和John之间有10条消息,其中我是发送者或接收者),我试图获得一个只包含John的单一事件的新数组,最新消息(无论是约翰作为发送者还是接收者)。我和Jane之间也有两条消息(一条是我发送的,另一条是我接收的),我希望我和Jane之间也只有一条消息

最后,我试图得到一个包含三条消息的数组

-一个是托马斯

-一个是简

-一个是约翰

如果有人有解决方案,请分享

[
{
    "_id": "5f58b7a4075626065aaa752a",
    "message": "Hi",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4ea9d045cc6b736870a076",
    "senderInfo": {
        "_id": "5f58b7a4075626065aaa752b",
        "name": "Thomas",
    },
    "receiverInfo": {
        "_id": "5f58b7a4075626065aaa752c",
        "name": "ME",
    }
},
{
    "_id": "5f57f190075626065aaa600d",
    "message": "When I click on \"go to session\", I just see myself. I doubt the connection was established",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57f190075626065aaa600e",
        "name": "Me",
    },
    "receiverInfo": {
        "_id": "5f57f190075626065aaa600f",
        "name": "John",
    }
},
{
    "_id": "5f57f08d075626065aaa5eed",
    "message": "I think I lost all the calls. The session takes a while to load",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57f08d075626065aaa5eee",
        "name": "Me ",
    },
    "receiverInfo": {
        "_id": "5f57f08d075626065aaa5eef",
        "name": "John",

    }
},
{
    "_id": "5f57f068075626065aaa5eae",
    "message": "Kk",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4e646822ab43702ee29ebb",
    "senderInfo": {
        "_id": "5f57f068075626065aaa5eaf",
        "name": "John",
    },
    "receiverInfo": {
        "_id": "5f57f068075626065aaa5eb0",
        "name": "Me",
    },
},
{
    "_id": "5f57efd3075626065aaa5e2d",
    "message": "I'm available now",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57efd3075626065aaa5e2e",
        "name": "Me"
    },
    "receiverInfo": {
        "_id": "5f57efd3075626065aaa5e2f",
        "name": "John",
    }
},
{
    "_id": "5f57ee75075626065aaa5dcb",
    "message": "Ok",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57ee75075626065aaa5dcc",
        "name": "Me",
    },
    "receiverInfo": {
        "_id": "5f57ee75075626065aaa5dcd",
        "name": "John",
    }
},
{
    "_id": "5f57ee5f075626065aaa5d99",
    "message": "Mark available let me try ",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4e646822ab43702ee29ebb",
    "attachment": null,
    "type": 1,
    "senderInfo": {
        "_id": "5f57ee5f075626065aaa5d9a",
        "name": "John"
    },
    "receiverInfo": {
        "_id": "5f57ee5f075626065aaa5d9b",
        "name": "Me"
    }
},
{
    "_id": "5f57ee23075626065aaa5d6d",
    "message": "I got the notification but it just didn't connect",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57ee23075626065aaa5d6e",
        "name": "Me"
    },
    "receiverInfo": {
        "_id": "5f57ee23075626065aaa5d6f",
        "name": "John",
    }
},
{
    "_id": "5f57ede3075626065aaa5d46",
    "message": "Didn't go",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4e646822ab43702ee29ebb",
    "senderInfo": {
        "_id": "5f57ede3075626065aaa5d47",
        "name": "John",
    },
    "receiverInfo": {
        "_id": "5f57ede3075626065aaa5d48",
        "name": "Me",
    }
},
{
    "_id": "5f57edd9075626065aaa5d38",
    "message": "I tried to call",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4e646822ab43702ee29ebb",
    "senderInfo": {
        "_id": "5f57edd9075626065aaa5d39",
        "name": "John",
    },
    "receiverInfo": {
        "_id": "5f57edd9075626065aaa5d3a",
        "name": "Me",
    }
},
{
    "_id": "5f57ed8a075626065aaa5d19",
    "message": "Hi",
    "receiver": "5f4e646822ab43702ee29ebb",
    "sender": "5f004feae528a90017327f3b",
    "senderInfo": {
        "_id": "5f57ed8a075626065aaa5d1a",
        "name": "Me",
    },
    "receiverInfo": {
        "_id": "5f57ed8a075626065aaa5d1b",
        "name": "John",
    },
},

{
    "_id": "5f58b7a4075626065aaa752a",
    "message": "Hi",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4ea9d045cc6b736870a076",
    "senderInfo": {
        "_id": "5f58b7a4075626065aaa752b",
        "name": "Jane",
    },
    "receiverInfo": {
        "_id": "5f58b7a4075626065aaa752c",
        "name": "ME",
    }
},

{
    "_id": "5f58b7a4075626065aaa752a",
    "message": "Hi",
    "receiver": "5f004feae528a90017327f3b",
    "sender": "5f4ea9d045cc6b736870a076",
    "receiverInfo": {
        "_id": "5f58b7a4075626065aaa752b",
        "name": "Jane",
    },
    "senderInfo": {
        "_id": "5f58b7a4075626065aaa752c",
        "name": "ME",
    }
},

]

可能有不止一种方法可以做到这一点。在没有任何上下文的情况下,听起来好像您正在尝试在某些Javascript应用程序代码中执行此操作,假设这是解决问题的正确级别,我将这样做:


使用。对于每条消息,检查结果数组中的消息中是否已经存在另一条与该用户相关的消息。如果没有,则将消息添加到结果数组,否则返回结果数组。

您可以提取一个要对列表排序的不同键(名称) 用…然后排序

让dJson='{JSON}'
//获取所有发送方或接收方的名称作为密钥
let allNames=[]//所有邮件名称,包括dublicate
const p_me=JSON.parse(dJson);
p_me['lol'].forEach(项目=>{
if(item.receiverInfo.name.toLowerCase()!=“me”){
allNames.push(item.receiverInfo.name.toLowerCase())
}否则{
allNames.push(item.senderInfo.name.toLowerCase())
}
})
//使用Set对象删除副本
让名称=[…新集合(所有名称)];
//获取新的筛选列表
让MyList=[]//指定所需的列表
(姓名){
对于(p_me的obj['lol']){
if(obj.receiverInfo.name.toLowerCase()==name | | obj.senderInfo.name.toLowerCase()==name){
//获取第一个匹配项,忽略相同名称的其他匹配项
MyList.push(obj)
打破
}
}

}
到目前为止,您尝试了什么?我尝试了数组集,我还尝试了循环和检查每个objectPost代码的实例,否则没有人知道您实际上在尝试做什么。