Reputation: 133
var Posts = [
{
likes: ['5e5782c4f695d70b6e376c8c'],
_id: '5e5782c4f695d70b6e376c7c',
width: 473,
height: 1000
},
{
likes: ['5e5782c4f695d70b6e376c6d'],
_id: '5e5782e7f695d70b6e376c82',
width: 601,
height: 1000
}
];
const myId = '5e5782c4f695d70b6e376c8c';
const result = Posts.likes.filter(userId => userId.toString() !== myId.toString());
console.log("full", result);
Getting error TypeError: Cannot read property 'filter' of undefined may be cause of nested filter
Upvotes: 1
Views: 72
Reputation: 73926
The issue here is Posts
is an array and thus Posts.likes
returns undefined
and thus you get this error. To fix this, you will simply need to apply the .filter()
method on Posts
array itself and then destructure the object for each item in the array and just get likes
property from it and then match likes[0]
with passed myId
variable like:
var Posts = [{
likes: ['5e5782c4f695d70b6e376c8c'],
_id: '5e5782c4f695d70b6e376c7c',
width: 473,
height: 1000
},
{
likes: ['5e5782c4f695d70b6e376c6d'],
_id: '5e5782e7f695d70b6e376c82',
width: 601,
height: 1000
}
];
const myId = '5e5782c4f695d70b6e376c8c';
const result = Posts.filter(({likes}) => likes[0] !== myId.toString());
console.log("full", result);
Upvotes: 3