如果在for循环(javascript)中所有if / else语句均为false,如何返回或执行函数

问题描述 投票:-1回答:2

因此,我试图弄清楚如果所有if / else语句都为false时如何执行函数。下面是我当前正在使用的代码片段,该代码使用for loop迭代对象来检查对象中的值,然后检查key/pairtechnology

如果所有语句都是假的,它应该返回或执行函数noMatch。当前代码段为每个else语句执行函数noMatch。如果没有匹配的值,有没有办法只执行一次?

$(document).ready(function() {
    let object = [
        {
            "planId": "1",
            "technology": "LTE@Home"
        },
        {
            "planId": "2",
            "technology": "LTE@Home"
        },
        {
            "planId": "54",
            "technology": "home-prepaid-wifi"
        },
        {
            "planId": "0",
            "technology": "XTreme Prepaid",
        }
    ];


    let technology = "lte-technology";
    let dataObject = object;

    function match() {
        console.log("match");
    }

    function noMatch() {
        console.log("no match");
    }

    for (let key in dataObject) {
        let obj = dataObject[key];


        if(technology == obj.technology) {
            return match()

        } else {
            return noMatch()
        }
    }    

});
javascript json
2个回答
0
投票

这应该有帮助。

    let object = [
        {
            "planId": "1",
            "technology": "LTE@Home"
        },
        {
            "planId": "2",
            "technology": "LTE@Home"
        },
        {
            "planId": "54",
            "technology": "home-prepaid-wifi"
        },
        {
            "planId": "0",
            "technology": "XTreme Prepaid",
        }
    ];


    let technology = "lte-technology";
    let dataObject = object;

    function match() {
        console.log("match");
    }

    function noMatch() {
        console.log("no match");
    }
    let ok = false; 
    for (let key in dataObject) {
        let obj = dataObject[key];


        if(technology == obj.technology) {
            ok= true; 

        } 

    }
             if(ok)
           return match();
         return noMatch();     

});


0
投票

尽管我确定有一个副本,但我找不到重复的副本。

根据RobG的评论,您设置了一个标志,并在循环完成后检查该标志。

[请注意,使用javascript的许多数组和对象方法中的方法可能更平滑,但这是对代码进行修改以执行所需的操作:

let dataObject = [{
    "planId": "1",
    "technology": "LTE@Home"
  },
  {
    "planId": "2",
    "technology": "LTE@Home"
  },
  {
    "planId": "54",
    "technology": "home-prepaid-wifi"
  },
  {
    "planId": "0",
    "technology": "XTreme Prepaid",
  }
];

let technology = "lte-technology";

// set flag to false
let hasMatch = false;
for (let key in dataObject) {
  let obj = dataObject[key];

  // if the property matches, set flag to true
  // (never use ==  always use ===)
  if (technology === obj.technology) {
    hasMatch = true;
  }
}

if (hasMatch) {
  console.log('match');
} else {
  console.log('nomatch');
}

注意我关于使用==代替===的评论-有关更多信息,see this Q&A

© www.soinside.com 2019 - 2024. All rights reserved.