【问题标题】:Looping through array with IF comparison in Javascript在Javascript中使用IF比较遍历数组
【发布时间】:2021-08-25 18:54:43
【问题描述】:

我是 Javascript 新手,遇到了一些问题。我正在尝试将 Array 单词与 Array 天数进行比较。如果 Array words 中的 word 不等于 中的 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;
}

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

结果 乔,乔,乔,乔,乔,乔,乔,史密斯,史密斯,史密斯,史密斯,史密斯,史密斯,史密斯,星期二,星期二,星期二

【问题讨论】:

  • 改用words.filter(v => !days.includes(v))

标签: javascript arrays if-statement conditional-statements


【解决方案1】:

您可以按照评论中的建议使用Array.prototype.filter() 或修复您在内部循环中遇到的错误。改成:

for (y in days) {
   if (words[x] == days[x]) {
      day = days[x];
   } else {
     name.push(words[x]);
   }
}

到:

for (y in days) {
    if (words[x] == days[y]) {
        name.push(words[x]);
    }
}

sn-p:

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[y]) {
                name.push(words[x]);
            }
        }
    }
    return name;
}
console.log(newFunction());

【讨论】:

    【解决方案2】:

    您的问题是您正在查看 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 可以实现更简洁的方法

    【讨论】:

      猜你喜欢
      • 2017-10-09
      • 2021-08-15
      • 2016-02-18
      • 2020-09-25
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2013-06-11
      相关资源
      最近更新 更多