Así que tengo 2 matrices aquí, digamos
const users = [{_id:ObjectId("6274fb5b82bcc9b2ccc0a361"), name:p1, age:10}, {_id:ObjectId("6274fbc382bcc9b2ccc0a362"), name:p2, age:15}, {_id:ObjectId("6277a3d5b66c061096222bbd")}, name:p3, age:20]; const filterArray = [ObjectId("6274fbc382bcc9b2ccc0a362"),ObjectId("6277a3d5b66c061096222bbd")];Quiero filtrar el resultado en función de la coincidencia de ObjectId, esto es lo que estoy tratando de hacer
const filteredUsers = users.filter(user=> !!filterArray.includes(user._id));estoy esperando este resultado
filteredUsers = [{_id:ObjectId("6274fbc382bcc9b2ccc0a362"), name:p2, age:15}, {_id:ObjectId("6277a3d5b66c061096222bbd")}, name:p3, age:20]Intente map filterArray a una matriz de String s y utilícelo para comparar:
const filterArray = [ObjectId("6274fbc382bcc9b2ccc0a362"),ObjectId("6277a3d5b66c061096222bbd")]; const mappedFilterArray = filterArray.map(id => id.toString()); const filteredUsers = users.filter(user=> !!mappedFilterArray.includes(user._id.toString()));Debe convertirlo en cadena y luego filtrarlo:
const users = [ { _id: ObjectId('6274fb5b82bcc9b2ccc0a361'), name: 'p1', age: 10 }, { _id: ObjectId('6274fbc382bcc9b2ccc0a362'), name: 'p2', age: 15 }, { _id: ObjectId('6277a3d5b66c061096222bbd'), name: 'p3', age: 20 } ] const filterArray = [ ObjectId('6274fbc382bcc9b2ccc0a362'), ObjectId('6277a3d5b66c061096222bbd') ] const stringFilterArray = filterArray.map(item => item.toString()) const filteredUsers = users.filter(user => stringFilterArray.includes(user._id.toString())) /* result [ { _id:ObjectId("6274fbc382bcc9b2ccc0a362"), name:p2, age:15 }, { _id:ObjectId("6277a3d5b66c061096222bbd"), name:p3, age:20 } ] */