如何在if else语句中检查数组是否包含某个值

时间:2019-07-13 11:03:01

标签: javascript parameters

第一个stackover流帖子!

我试图根据单击的“字符”按钮来更改结果。

因此,我从一个名为gendr = [];的变量开始。

如果单击名为“ marge”的按钮,则margeFunction将运行,这会将值“ female”推入数组内部。 如果单击“ Henry”按钮,将运行henryFunction,它将值“ male”推入数组。

后面的函数包含if else语句,其中如果数组包含值male,则显示“ male句子”。 否则,如果数组值是女性, “出现女性句子。”

 function helloFunction() {
   if(gendr[female]) {
       document.getElementById ('traitText').innerHTML = "and says the word hello in every sentence she speaks";
   } else {
      document.getElementById ('traitText').innerHTML = "and says the world hello in every sentence he speaks"
   }
 }

我不太确定该怎么做,我只是猜测了一下,但是我想知道正确的方法!在此先感谢:)

3 个答案:

答案 0 :(得分:2)

gendr[female]不起作用,因为没有female变量,并且您不想访问数组中的female位置,相反,听起来好像想要获取该数组的最后一个值。可以使用gendr[gendr.length - 1]完成。现在,您要检查该值是否为"female",可以通过比较(===)进行检查。

无论如何,如果您根本需要一个数组,那是有问题的,为什么不只保留一个布尔值(isFemale = false;)?

答案 1 :(得分:1)

有多种方法可以实现您想要实现的目标。 indexOf方法是检查数组中是否存在元素的有效方法。此外,ECMAScript 2016具有新方法includes,用于检查数组中是否存在元素。 这是一个示例:

var gender = ['male', 'female'];

function checkInArray(genderArray) {
  if(genderArray.indexOf('male') > -1) {

    //do something
    return 'male found';
  } else {
    //do something
    return 'female found';
  }
}

function checkInArray2(genderArray) {
  return genderArray.includes('male'); 
}

console.log(checkInArray2(gender))

var array = [1,2,3,4,5];
array.includes(2);     //true
array.includes(4);     //true
array.includes(1, 2);  //false (second parameter is the index position in this array at which to begin searching)

查看以下内容:https://playcode.io/373046

答案 2 :(得分:0)

问题的 HTML部分应如下所示

<button onclick="helloFunction('female')">Marge</button>
<button onclick="helloFunction('male')">Henry</button>

javascript 然后

function helloFunction(gendr) {
  if(gendr=="female") ...
}

我相信您的问题更多是关于参数传递,而不是数组。