Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组是否包含?_Javascript_Arrays_Var - Fatal编程技术网

Javascript 数组是否包含?

Javascript 数组是否包含?,javascript,arrays,var,Javascript,Arrays,Var,我在JS中有以下数组 var wordselection = [ { 'word': "Pomme", "gender": "m", }, { "word": "Banane", "gender": "f", }, { "word": "Ananas", "gender": "m", }, { "word": "Chat", "gender": "f", }, { "word": "Chien", "gender": "m", }, { "word": "Poisson", "gender":

我在JS中有以下数组

 var wordselection = [
{ 'word': "Pomme", "gender": "m", },
{ "word": "Banane", "gender": "f", },
{ "word": "Ananas", "gender": "m", },
{ "word": "Chat", "gender": "f", },
{ "word": "Chien", "gender": "m", },
{ "word": "Poisson", "gender": "f", },

];   

function randomword(){
var chosen = wordselection[Math.floor(Math.random()*wordselection.length)].word
document.getElementById("wordinput").innerHTML=chosen;
}
我目前有一个randomword函数,它从数组中生成一个随机的“单词”,并将其放入一个div中(例如pomme、chat)

我需要创建另一个函数来检查div中的随机词,然后计算数组中该词的性别是'm'还是'f'

例如,如果随机单词生成为“Poisson”,我需要一个函数来实现“Poisson”的生成,并在数组中查看它是否为“f”


这是如何实现的?

我不知道您的完整代码结构或实际实现。但是,我会用这两种方法中的任何一种。可能还有很多其他的方法来实现这个解决方案

  • 使用复制DIV元素的HTML 在一个变量中。HTML将存储为字符串。搜索 字符串并查看“单词”是否存在。如果它有或没有,采取行动 适当的行动

  • 创建一个临时数组。将键值对存储在该数组中。例如{“泊松”,“F”}。稍后,当您想要查找“单词”是否存在时,只需在数组中搜索它们的键是否存在。如果键存在,那么您可以始终检查它的值,该值将是性别


  • 以下是使用JQuery所需的内容:

    JavaScript代码:

     var wordselection = [
    { 'word': "Pomme", "gender": "m", },
    { "word": "Banane", "gender": "f", },
    { "word": "Ananas", "gender": "m", },
    { "word": "Chat", "gender": "f", },
    { "word": "Chien", "gender": "m", },
    { "word": "Poisson", "gender": "f", },
    
    ];  
    
    
         $.each( wordselection, function(key, value) {
    
             if ( value.word == $('#result').html() )
             {
                 alert(value.gender);
             }
         })
    

    或者使用随机函数:

     var wordselection = [
    { 'word': "Pomme", "gender": "m", },
    { "word": "Banane", "gender": "f", },
    { "word": "Ananas", "gender": "m", },
    { "word": "Chat", "gender": "f", },
    { "word": "Chien", "gender": "m", },
    { "word": "Poisson", "gender": "f", },
    
    ];  
    
    function randomword(){
        var chosen = wordselection[Math.floor(Math.random()*wordselection.length)].word
    document.getElementById("wordinput").innerHTML=chosen;
    }
    
         randomword()
         $.each( wordselection, function(key, value) {
    
             if ( value.word == $('#wordinput').html() )
             {
                 alert(value.gender);
             }
         })
    


    无论如何,我更喜欢使用
    过滤器的解决方案:

    这是一个简单的JS解决方案,它可以满足您的需求:

    HTML

    <div id="test">Chat</div>
    
    如果div中的单词不在列表中,它将记录为未定义

    演示:

    编辑:如果需要检查许多这样的单词,可以通过将它们存储在映射(在JavaScript中也称为Object)中获得更好的性能:

    那么过滤部分就简单到:

    console.log(wordselection[word]); // gender or undefined
    
    如果您从外部源获取wordselection,但仍希望将其转换为上述格式,则可以使用以下代码段:

    var optimizedwordselection;
    for (var i=0; i<wordselection.length; i++) {
      optimizedwordselection[wordselection.word] = wordselection.gender;
    }
    
    var优化选择;
    
    对于(var i=0;i您可以使用其他库吗?如果我是您,我会使用lo dash,它可以为您处理此类事情,而无需您自己迭代集合。例如,您需要做的只是:

    var wordselection = [
        { 'word': "Pomme", "gender": "m", },
        { "word": "Banane", "gender": "f", },
        { "word": "Ananas", "gender": "m", },
        { "word": "Chat", "gender": "f", },
        { "word": "Chien", "gender": "m", },
        { "word": "Poisson", "gender": "f", },
    ];
    
    var gender = _.find(wordSelection, { 'word': "Banane" }).gender;
    

    您只需在JSON对象数组中循环:

    var wordselection = [
      { 'word': "Pomme", "gender": "m", },
      { "word": "Banane", "gender": "f", },
      { "word": "Ananas", "gender": "m", },
      { "word": "Chat", "gender": "f", },
      { "word": "Chien", "gender": "m", },
      { "word": "Poisson", "gender": "f", },
    ]; 
    
    var selectedWord = "Chien";
    var selectedWordGender;
    for(var i = 0; i < wordselection.length; i++) {
      if(wordselection[i].word === selectedWord)
      {
          selectedWordGender = wordselection[i].gender;
      }
    }     
    
    console.log(selectedWordGender);
    
    var wordselection=[
    {'word':“Pomme”,“gender:“m”,},
    {“单词”:“Banane”,“性别”:“f”},
    {“单词”:“Ananas”,“性别”:“m”},
    {“单词”:“聊天”,“性别”:“f”,},
    {“字”:“简”,“性别”:“m”},
    {“单词”:“泊松”,“性别”:“f”,},
    ]; 
    var selectedWord=“钱”;
    var选择词性别;
    for(var i=0;i
    您能为第二个选项提供一些代码吗?我是stackoverflow新手,不知道如何在注释中添加代码。因此,添加新答案。请检查。要在注释中添加代码,您可以用以下字符包围它:`。此外,编辑您的答案而不是添加新答案几乎总是最好的方法。我不知道
    filter
    已经存在。我认为@Tibos有最好的答案
    var optimizedwordselection;
    for (var i=0; i<wordselection.length; i++) {
      optimizedwordselection[wordselection.word] = wordselection.gender;
    }
    
    var wordselection = [
        { 'word': "Pomme", "gender": "m", },
        { "word": "Banane", "gender": "f", },
        { "word": "Ananas", "gender": "m", },
        { "word": "Chat", "gender": "f", },
        { "word": "Chien", "gender": "m", },
        { "word": "Poisson", "gender": "f", },
    ];
    
    var gender = _.find(wordSelection, { 'word': "Banane" }).gender;
    
    var wordselection = [
      { 'word': "Pomme", "gender": "m", },
      { "word": "Banane", "gender": "f", },
      { "word": "Ananas", "gender": "m", },
      { "word": "Chat", "gender": "f", },
      { "word": "Chien", "gender": "m", },
      { "word": "Poisson", "gender": "f", },
    ]; 
    
    var selectedWord = "Chien";
    var selectedWordGender;
    for(var i = 0; i < wordselection.length; i++) {
      if(wordselection[i].word === selectedWord)
      {
          selectedWordGender = wordselection[i].gender;
      }
    }     
    
    console.log(selectedWordGender);