如何在JavaScript中检查字符串是否相等

问题描述 投票:0回答:4

我几乎不熟悉JavaScript。

我想创建一个随机名称生成器,从字符串数组中我得到5个随机名称。这有效,但我想添加许多名称,我想检查没有重复的名称。因此,我想创建一个可以编写名称的文本字段,并使用按钮按下for循环查看数组索引,并使用if语句。 Ť

他是HTML代码:

<div id="box">
    <p id="first"></p>
    <p id="second"></p>
    <p id="third"></p>
    <p id="fourth"></p>
    <p id="fifth"></p>
</div>
<br>
<input type="button" value="Generier Namen" id="button">

<div>
    <input type="text" placeholder="Name.." id="input">
    <input type="button" value="Checken" id="checkbutton">
    <p id="output"></p>
</div>

这是JavaScript

let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];

    document.getElementById("button").onclick = function() {
        let randomOne = Math.floor(Math.random() * namesMale.length);
        let randomTwo = Math.floor(Math.random() * namesMale.length);
        if(randomTwo == randomOne){
            let randomTwo = Math.floor(Math.random() * namesMale.length);
        }
        let randomThree = Math.floor(Math.random() * namesMale.length);
        if(randomThree == randomOne ||randomThree == randomTwo){
            let randomThree = Math.floor(Math.random() * namesMale.length);
        }
        let randomFour = Math.floor(Math.random() * namesMale.length);
        if(randomFour == randomOne || randomFour == randomTwo || randomFour == randomThree){
            let randomFour = Math.floor(Math.random() * namesMale.length);
        }
        let randomFive = Math.floor(Math.random() * namesMale.length);
        if(randomFive == randomOne || randomFive == randomTwo || randomFive == randomThree || randomFive == randomFour){
            let randomFive = Math.floor(Math.random() * namesMale.length);
        }

        document.getElementById("first").innerHTML = namesMale[randomOne];
        document.getElementById("second").innerHTML = namesMale[randomTwo];
        document.getElementById("third").innerHTML = namesMale[randomThree];
        document.getElementById("fourth").innerHTML = namesMale[randomFour];
        document.getElementById("fifth").innerHTML = namesMale[randomFive];
    }



    document.getElementById("checkbutton").onclick = function() {
        let input = document.getElementById("input").value;
        for(let i = 0; i <= namesMale.length; i++){
            console.log(namesMale[i]);
            if(input.equals(namesMale[i])){
                document.getElementById("output").innerHTML = "Existiert";
            }
            else{
                document.getElementById("output").innerHTML = "Existiert nicht";
            }
        }
    }


//  ####### Event Handler ####### 

    let pressTab = document.getElementById("button");
    pressTab.addEventListener("keyup", function(event){
        if(event.keyCode === 13){
            event.preventDefault();
            document.getElementById("set").click();
        }
    });

我希望它工作的方式适用于C#和Java,但我的问题是,chrome控制台说:Uncaught TypeError:input.equals不是函数

我怎样才能使它有效,因为在文档中我什么都没发现..

编辑:我忘了说“===”和“==”会得到我(如果名字在列表中或不在)“Existiert nicht”英文“不存在”

javascript
4个回答
1
投票

您可以使用==来检查相等性

let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];
function findName(val) {
  for (let i = 0; i <= namesMale.length; i++) {
    console.log(namesMale[i]);
    if (val == namesMale[i]) {
      console.log("Existiert");
    } else {
      console.log("Existiert nicht");
    }
  }
}

findName('Yuki');

您还可以使用函数indexOf来查找数组中是否存在特定字符串

let namesMale = ["Akemi", "Akechi", "Akihiko", "Akihiro", "Akira", "Amida", "Arata", "Daisuke", "Eichi", "Eiko", "Hajime", "Haru", "Haruo", "Hikaru", "Hiroshi", "Hiroyuki", "Hisoka", "Hoshi", "Isao", "Izanagi", "Kaori", "Kazuhiko", "Kenji", "Kentaro", "Kichi", "Kioshi", "Kitaro", "Kiyo", "Kiyoshi", "Koshiro", "Masahiro", "Masayuki", "Minori", "Mitsuo", "Namiyo", "Naoko", "Nikko", "Ozuru", "Raidon", "Renjiro", "Ryo", "Ryuji", "Sadao", "Satoshi", "Seiichi", "Shinichi", "Shuji", "Taiyo", "Takahiro", "Takeo", "Takiyo", "Taku", "Tama", "Tatsuo", "Tenchi", "Tetsuya", "Tomo", "Torio", "Toshi", "Toyo", "Tsutomu", "Yasashiku", "Yoshi", "Yoshikazu", "Yoshimitsu", "Yoshinori", "Yoshito", "Yoshiyuki", "Yuji", "Yuki", "Yukio", "Yutaka", "Yuudai", "Zinan"];
function findName(val) {
  if (namesMale.indexOf(val) != -1) {
    console.log(val+" Existiert");
  } else {
    console.log(val+" Existiert nicht");
  }
}

findName('Yuki');
findName('ABC');

0
投票

字符串没有这样的方法equals。你没有定义它的原型。你可以检查一下这样:

if(input == namesMale[i]){

要么,

if(input === namesMale[i]){ // strictly compare

0
投票

根据提到的错误,您将面临以下错误

if(input.equals(namesMale[i])){  //Error is here, javascript does not contain .equal method
                document.getElementById("output").innerHTML = "Existiert";
            }
            else{
                document.getElementById("output").innerHTML = "Existiert nicht";
            }

你可以试试

if(input === namesMale[i]) //=== triple equal to check type and value 

要么

 if(input == namesMale[i]) //== double equal for testing loose equality

0
投票

不幸的是,在JavaScript中没有用于strgins比较的equals函数。所以,你可以检查这两个字符串是否与===运算符相等。总的来说,您的功能必须如下:

document.getElementById("checkbutton").onclick = function() {
    let input = document.getElementById("input").value;
    for(let i = 0; i <= namesMale.length; i++){
        console.log(namesMale[i]);
        if(input === namesMale[i]){
            document.getElementById("output").innerHTML = "Existiert";
        }
        else{
            document.getElementById("output").innerHTML = "Existiert nicht";
        }
    }
}

希望它有所帮助,干杯!

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