当String === String时,Javascript循环未返回true

时间:2019-03-13 14:12:39

标签: javascript arrays node.js mongodb

在遍历数组以查找数组是否包含我要查找的单词时,如果我进行控制台操作,则循环始终返回“ false”。注销要比较的内容后,我可以清楚地看到我是在数组(collectionNameArray)中寻找(collectionNameLookingFor),因此它应该返回true。

function checkCollectionNames(arrayOfCollections, collectionName) {
  for (let i = 0; i < arrayofCollections.length; i++) {
    if (arrayOfCollections[i] === collectionName) {
      return true;
    }
  }
  return false;
}

function saveContentToDb(req, res) {
  const db = getDb();
  const pageDetails = req.body;
  let saveType;

  db.db(pageDetails.databaseName).listCollections().toArray((error, collections) => {
    if (error) {
      throw error;
    } else {
      collections.map(collection => (collection.name)).forEach(collectionNameArray => {
        const collectionNameLookingFor = req.body.page;
        const check = checkCollectionNames(collectionNameArray, collectionNameLookingFor);

        console.log('===========Looking to see if it is true or false==========');
        console.log(check);
        console.log(`Name of collection in Database: ${collectionNameArray} ::: ${collectionNameLookingFor}`);
        console.log('==========================================================');
        if (check === true) {
          saveType = 'updated';
          console.log(`saveType = ${saveType}`);
        } else {
          saveType = 'created';
          console.log(`saveType = ${saveType}`);
        }
      });
    }
  });
}

1 个答案:

答案 0 :(得分:0)

您可能需要检查collectionName,因为这是您在arrayOfCollections旁边而不是array本身传递的参数。

function checkCollectionNames(arrayOfCollections, collectionName) {
    for (let i = 0; i < arrayOfCollections.length; i++) {
        if (arrayOfCollections[i] === collectionName) {
            return true;
        }
    }
    return false;
}

短版:

function checkCollectionNames(arrayOfCollections, collectionName) {
    return arrayOfCollections.includes(collectionName);
}