I have an array called messages. When I send a message I am sender, when I receive it I am receiver. My 'id' is '6003123'. What's the easiest way to get messages that are sender, receiver and related to my id? Is the following way and the use of the filter method appropriate?
const messages = [
{
_id: '610be2c',
msg: { text: 'sdsdsdsdsd' },
sender: '608ffae',
receiver: '6003123' **//myId**
},
{
_id: '610be2d',
msg: { text: 'sdsdsdsdsdsdsdsdsdsdsd' },
sender: '6003123', **//myId**
receiver: '608ffae'
},
{
_id: '610be2dert',
msg: { text: 'sdsdsdsdsdsdsdsdsdsdsd' },
sender: '6003123', **//myId**
receiver: '608ffae'
},
{
_id: '610be2dertrtyu',
msg: { text: 'sdsdsdffgghghgh' },
sender: '3456',
receiver: '098765'
},
{
_id: '610be2dertrtyu',
msg: { text: 'sdsdsdffgghghgh' },
sender: '098765'
receiver: '3456'
}
]
const myId = '6003123';
let messagesArray = messages.filter(message => message.sender === myId && message.receiver === myId) || message.sender === myId || message.receiver === myId));
I think:
let messagesArray = messages.filter(message => message.sender === myId || message.receiver === myId));
is what you're looking for.
.filter() and only one || OR operatorconst messages = [
{
_id: "610be2c",
msg: { text: "sdsdsdsdsd" },
sender: "608ffae",
receiver: "6003123",
}, {
_id: "610be2d",
msg: { text: 'sdsdsdsdsdsdsdsdsdsdsd' },
sender: "6003123",
receiver: "608ffae"
}, {
_id: "610be2dert",
msg: { text: "sdsdsdsdsdsdsdsdsdsdsd" },
sender: "6003123",
receiver: "608ffae"
}, {
_id: "610be2dertrtyu",
msg: { text: "sdsdsdffgghghgh" },
sender: "3456",
receiver: "098765",
}, {
_id: "610be2dertrtyu",
msg: { text: "sdsdsdffgghghgh" },
sender: "098765",
receiver: "3456",
}
];
const getMessagesWhereSenderReceiver = (id) => messages.filter(msg => {
return msg.sender === id || msg.receiver === id;
});
console.log(getMessagesWhereSenderReceiver("6003123"));