首页 > 解决方案 > 在Javascript中使用IF比较遍历数组

问题描述

我是 Javascript 新手,遇到了一些问题。我正在尝试将 Array 单词与 Array 天数进行比较。如果Array words中的单词不等于Array days中的day,则该单词将被推送到name Array。我尝试使用下面的脚本,但它给了我不同的答案。

我希望仅从单词数组中获取名称(Joe Smith),如果有的话,将排除这一天。

function newFunction () {
 var days = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
 var words = new Array("Joe", "Smith", "Tuesday");
 var name = new Array();
 var day = "";
 for (x in words) {
  for (y in days) {
    if (words[x] == days[x]) {
      day = days[x];
   } else {
      name.push(words[x]);
  };
 };
  return name;
}

当我运行脚本时,我得到了这个结果。

结果 Joe,Joe,Joe,Joe,Joe,Joe,Joe,Smith,Smith,Smith,Smith,Smith,Smith,Smith,Tuesday,Tuesday,Tuesday

标签: javascriptarraysif-statementconditional-statements

解决方案


您的问题是您正在查看days数组,但names即使它位于数组中的其他位置,仍将其添加到该数组中。

以下是简单 JS 中的解决方案:

function NewFunction (){
    let days = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
    let words = new Array("Joe", "Smith", "Tuesday");
    let name = new Array();
    let day = "";
    for(let i in words){
        let found = false;
        for(let j in days){
            if(words[i] == days[j]){
                day = days[j];
                found = true;
            }
        }
        if(!found){
            name.push(words[i]);
        }
    }
    return name;
}

请注意,我正在寻找这个词,但没有在第二个循环中添加它,只是设置一个已找到的变量并将其添加到外部

注意:使用更高级的 JS 可以实现更简洁的方法


推荐阅读