首页 > 解决方案 > 检查数组中是否有东西

问题描述

首先,我必须处理一个非常大的数组,所以我试图将它转换为一个Set然后使用has()方法来减少时间,而不是includes()Array它本身上使用。

我将 myArray转换为Set然后使用 has 方法,并且我试图寻找的元素在该集合中,所以has()应该返回true,但它false每次都会给出。

exports.DoesUserRegistredInThisEvent = catchAsync(async (req, res, next) => {
  const userId = req.user.id;
  const eventId = req.params.eventId;
  const userCreatingReview = await User.findById(userId);
  newArray = userCreatingReview.registredInEvents;
  const newSet = new Set(newArray);
  const bool = newSet.has(eventId);
  console.log(newArray); // => ["60982947e2fe4e4eef70fcf3","609270942709952ebb6de50f"]
  console.log(newSet); // => { 60982947e2fe4e4eef70fcf3, 609270942709952ebb6de50f }
  console.log(eventId, typeof eventId); // => 60982947e2fe4e4eef70fcf3 string
  console.log(bool); // => false
  if (bool) {
    next();
  }
  else {
    return next(
      new AppError('User must be registred in this event to perform this action.', 400)
    );
  }
});

标签: javascriptarraysset

解决方案


推荐阅读