2013-10-09 96 views
1

我在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的randomword功能(例如梨果,聊天)

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

例如,如果随机字为“泊松产生的,我需要它实现了”泊松生成,并期待在阵列中看到,这是性别“F”

功能怎么可以这样实现?

回答

0

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

  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]; 
} 
+0

你能为第二个选择提供一些代码吗? – craig

+0

我是新的在stackoverflow和不知道如何把代码放在评论。因此添加了一个新的答案。请检查。 – Kathy

+0

要放置注释中的代码,你可以用这个字符包围它:'。而且,编辑你的答案而不是添加新答案几乎总是最好的方法。 – Tibos

0

这里是你想要使用什么样的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办法解决:Does array contain?

2

这里是一个简单的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字从列表不是它记录不确定的。

DEMO:http://jsbin.com/AlOtINE/1/edit

编辑:

var wordselection = { 
    'Pomme' : 'm', 
    'Banane' : 'f', 
    'Ananas' : 'm', 
    'Chat' : 'f', 
    'Chien' : 'm', 
    'Poisson' : 'f' 
} 
如果您需要检查很多这样的话,你可以将它们存储在一个地图(也被称为JavaScript对象)获得更好的性能

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

如果从室外广告获取字选择:

然后作为过滤部分很简单但仍然希望将其转换为上述格式,您可以使用此代码段:

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

您是否可以使用任何其他库?如果我是你,我会使用破折号,它可以为你处理这种事情,而无需你自己迭代集合。例如,所有你需要做的是:

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; 
0

你可以通过你的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); 
+0

我不知道过滤器存在。我认为@Tibos有最好的答案 – jasonscript