为了账号安全,请及时绑定邮箱和手机立即绑定

使用字符串数组过滤对象数组

使用字符串数组过滤对象数组

Smart猫小萌 2022-12-09 15:26:11
我想通过字符串数组过滤出对象数组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']输出应该是不在第二个数组中的第三个用户: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”的用户
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

您不需要遍历第二个数组。你只需要检查它是否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}]



查看完整回答
反对 回复 2022-12-09
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您可以使用 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)


查看完整回答
反对 回复 2022-12-09
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

在您的解决方案中,您正在检查某些元素是否不等于用户 ID,但您可能想检查某些元素是否匹配它:


let myArrayFiltered = allUsers.filter((user) => {

  return connectedUsers.some((el) => {

    return user._id === el;

  });

});

这仅正确返回 2 个用户。


查看完整回答
反对 回复 2022-12-09
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号