[英]Filter an object containing a key that contains an array of objects using an array of strings
[英]filter an array of object using an array of strings
我想通过字符串数组过滤出对象数组
let allUsers = [
{
"avatar":null,
"deleted":false,
"_id":"5f1f5df967b3240004f50a36",
"email":"emailroom3@test.com",
"password":"$2a$10$5eKv6OVouPnPH.3g9STEYO990V.L14kpD2ImZ3AtZtHaRjCg4oj/6",
"fcm":"fcm3",
"createdAt":"2020-07-27T23:06:33.683Z",
"updatedAt":"2020-07-27T23:06:33.683Z",
"__v":0
},
{
"avatar":null,
"deleted":false,
"_id":"5f1f5e0067b3240004f50a37",
"email":"emailroom2@test.com",
"password":"$2a$10$czA2dASdEo1Dw0oAxw.y1eJwg4lrZW12tLE6sUeG5k.PThuineTIm",
"fcm":"fcm2",
"createdAt":"2020-07-27T23:06:40.702Z",
"updatedAt":"2020-07-27T23:06:40.702Z","__v":0
},
{
"avatar":null,
"deleted":false,
"_id":"5f1f5d9167b3240004f50a33",
"email":"emailroom1@test.com",
"password":"$2a$10$0O2aDCCSibWlNznIWfHTxuY8vNq4Sge/YDRuntKJl9UKnSI.9TEfC",
"fcm":"fcm1",
"createdAt":"2020-07-27T23:04:49.285Z",
"updatedAt":"2020-07-27T23:04:49.285Z",
"__v":0
}]
let connectedUsers = ['5f1f5df967b3240004f50a36','5f1f5e0067b3240004f50a37']
output 应该是不在第二个数组中的第三个用户:
myArrayFiltered = [
{
"avatar":null,
"deleted":false,
"_id":"5f1f5d9167b3240004f50a33",
"email":"emailroom1@test.com",
"password":"$2a$10$0O2aDCCSibWlNznIWfHTxuY8vNq4Sge/YDRuntKJl9UKnSI.9TEfC",
"fcm":"fcm1",
"createdAt":"2020-07-27T23:04:49.285Z",
"updatedAt":"2020-07-27T23:04:49.285Z",
"__v":0
}
]
我试过了
let myArrayFiltered = allUsers.filter((user) => {
return connectedUsers.some((el) => {
return user._id !== el;
});
});
但它返回所有 3 个用户
编辑:所有答案都返回第二个数组中的 2 个用户,但我想要的是不是的用户,ID 为 '5f1f5d9167b3240004f50a33' 的用户
您不需要遍历第二个数组。 您只需检查user._id
是否在connectedUsers
数组中。 像这样:
let allUsers = [{"avatar":null,"deleted":false,"_id":"5f1f5df967b3240004f50a36","email":"emailroom3@test.com","password":"$2a$10$5eKv6OVouPnPH.3g9STEYO990V.L14kpD2ImZ3AtZtHaRjCg4oj/6","fcm":"fcm3","createdAt":"2020-07-27T23:06:33.683Z","updatedAt":"2020-07-27T23:06:33.683Z","__v":0},{"avatar":null,"deleted":false,"_id":"5f1f5e0067b3240004f50a37","email":"emailroom2@test.com","password":"$2a$10$czA2dASdEo1Dw0oAxw.y1eJwg4lrZW12tLE6sUeG5k.PThuineTIm","fcm":"fcm2","createdAt":"2020-07-27T23:06:40.702Z","updatedAt":"2020-07-27T23:06:40.702Z","__v":0},{"avatar":null,"deleted":false,"_id":"5f1f5d9167b3240004f50a33","email":"emailroom1@test.com","password":"$2a$10$0O2aDCCSibWlNznIWfHTxuY8vNq4Sge/YDRuntKJl9UKnSI.9TEfC","fcm":"fcm1","createdAt":"2020-07-27T23:04:49.285Z","updatedAt":"2020-07-27T23:04:49.285Z","__v":0}]; let connectedUsers = ['5f1f5df967b3240004f50a36','5f1f5e0067b3240004f50a37']; let myArrayFiltered = allUsers.filter(user => { return connectedUsers.includes(user._id); }); console.log(myArrayFiltered); // myArrayFiltered = [{"avatar":null,"deleted":false,"_id":"5f1f5d9167b3240004f50a33","email":"emailroom1@test.com","password":"$2a$10$0O2aDCCSibWlNznIWfHTxuY8vNq4Sge/YDRuntKJl9UKnSI.9TEfC","fcm":"fcm1","createdAt":"2020-07-27T23:04:49.285Z","updatedAt":"2020-07-27T23:04:49.285Z","__v":0}]
您可以使用 indexOf 方法检查数组中的项目或不作为
let myArrayFiltered = allUsers.filter((user) => {
return connectedUsers.indexOf(user._id) > -1;
});
let allUsers = [{"avatar":null,"deleted":false,"_id":"5f1f5df967b3240004f50a36","email":"emailroom3@test.com","password":"$2a$10$5eKv6OVouPnPH.3g9STEYO990V.L14kpD2ImZ3AtZtHaRjCg4oj/6","fcm":"fcm3","createdAt":"2020-07-27T23:06:33.683Z","updatedAt":"2020-07-27T23:06:33.683Z","__v":0},{"avatar":null,"deleted":false,"_id":"5f1f5e0067b3240004f50a37","email":"emailroom2@test.com","password":"$2a$10$czA2dASdEo1Dw0oAxw.y1eJwg4lrZW12tLE6sUeG5k.PThuineTIm","fcm":"fcm2","createdAt":"2020-07-27T23:06:40.702Z","updatedAt":"2020-07-27T23:06:40.702Z","__v":0},{"avatar":null,"deleted":false,"_id":"5f1f5d9167b3240004f50a33","email":"emailroom1@test.com","password":"$2a$10$0O2aDCCSibWlNznIWfHTxuY8vNq4Sge/YDRuntKJl9UKnSI.9TEfC","fcm":"fcm1","createdAt":"2020-07-27T23:04:49.285Z","updatedAt":"2020-07-27T23:04:49.285Z","__v":0}] let connectedUsers = ['5f1f5df967b3240004f50a36','5f1f5e0067b3240004f50a37'] let myArrayFiltered = allUsers.filter((user) => { return connectedUsers.indexOf(user._id) > -1; }); console.log(myArrayFiltered)
在您的解决方案中,您正在检查某些元素是否不等于用户 ID,但您可能的意思是检查某些元素是否匹配它:
let myArrayFiltered = allUsers.filter((user) => {
return connectedUsers.some((el) => {
return user._id === el;
});
});
这正确地只返回 2 个用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.