数组是否包含

Does array contain?

本文关键字:包含 是否 数组      更新时间:2023-09-26

>我在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;
}

我目前有一个随机单词函数,它从数组中生成一个随机的"单词"并将其放入div 中(例如 pomme、聊天(

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

例如,如果随机单词生成为"泊松",我需要一个函数来意识到"泊松"已生成并查看数组以查看它是性别"f">

如何实现这一点?

这是一个简单的JS解决方案,可以做你想要的:

.HTML

<div id="test">Chat</div>

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" }
];   
var word = document.getElementById('test').innerHTML;
var item = wordselection.filter(function(el){
  return el.word == word
})[0];
console.log(item && item.gender);

如果div 中的单词不在列表中,它将记录未定义。

演示:http://jsbin.com/AlOtINE/1/edit

编辑:如果您需要检查许多这样的单词,您可以通过将它们存储在地图中(也称为JavaScript中的对象(来获得更好的性能:

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

然后过滤部分很简单:

console.log(wordselection[word]); // gender or undefined

如果您从外部源获取单词选择,但仍想将其转换为上述格式,则可以使用以下代码段:

var optimizedwordselection;
for (var i=0; i<wordselection.length; i++) {
  optimizedwordselection[wordselection.word] = wordselection.gender;
}
以下是

您希望使用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);
         }
     })

http://jsfiddle.net/GWUxc/

或者使用您的随机函数:

 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);
         }
     })

http://jsfiddle.net/GWUxc/1/

无论如何,我更喜欢使用filter方法的解决方案:数组包含吗?

你能使用任何其他库吗? 如果我是你,我会使用 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);
我不知道

你完整的代码结构或实际实现。但是,我会采取两种方式中的任何一种。可能还有许多其他方法可以实现解决方案。

  1. 使用 http://api.jquery.com/html/复制 DIV 元素的 HTML在变量中。HTML 将存储为字符串。在字符串,看看"单词"是否存在。如果它有或没有,采取适当的行动。

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

var holder = new Array();
function randomword(){
    var chosen = wordselection[Math.floor(Math.random()*wordselection.length)].word
    if( checkPost(chosen) ){
        document.getElementById("wordinput").innerHTML=chosen;
        holder['chosen'] = gender_variable;
    }
}
function checkPost(word){
    if( holder[word] === undefined ) {
        return null;
    }
    return holder[word];
}