const users =
[
{
_id: "5fbfa729fc46a415ce5503a6",
first_name: 'Allen',
last_name: 'Border',
timestamp: 1606395689121,
key: [ "5fbf6f91aff7f3320a906547", "5fbfa748fc46a415ce5503a8" ]
},
{
_id: "5fbfa6fbfc46a415ce5503a4",
first_name: 'james',
last_name: 'roger',
timestamp: 1606395689125
},
{
_id: "5fbf6f91aff7f3320a906547",
first_name: 'david',
last_name: 'gosh',
timestamp: 1606395689130,
key: [ "5fbfa729fc46a415ce5503a6" ]
},
{
_id: "5e4e74eb380054797d9db623",
first_name: 'Ricky',
last_name: 'bichel',
timestamp: 1606395689131
}
]
const user_id = "5fbfa748fc46a415ce5503a8";
how to seperate match not match data if user_id matched with users.key it should have matched data that does not match should have notMatch data. can we separate two results match and not match records ?
Does not work
const result = users.key.indexOf(user_id);
console.log(users.storyMute)
You may use Array.prototype.reduce() the following way:
const users=[{_id:"5fbfa729fc46a415ce5503a6",first_name:"Allen",last_name:"Border",timestamp:1606395689121,key:["5fbf6f91aff7f3320a906547","5fbfa748fc46a415ce5503a8"]},{_id:"5fbfa6fbfc46a415ce5503a4",first_name:"james",last_name:"roger",timestamp:1606395689125},{_id:"5fbf6f91aff7f3320a906547",first_name:"david",last_name:"gosh",timestamp:1606395689130,key:["5fbfa729fc46a415ce5503a6"]},{_id:"5e4e74eb380054797d9db623",first_name:"Ricky",last_name:"bichel",timestamp:1606395689131}]
const user_id="5fbfa748fc46a415ce5503a8"
const {matching, nonMatching} = users.reduce((acc, userRecord) => {
userRecord?.key?.includes(user_id)
// or, if you need to compare by _id
// userRecord._id === user_id
? acc.matching.push(userRecord)
: acc.nonMatching.push(userRecord)
return acc
}, {matching: [], nonMatching: []})
console.log(matching)