Javascript 数组是否包含?
我在JS中有以下数组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":
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”
这是如何实现的?我不知道您的完整代码结构或实际实现。但是,我会用这两种方法中的任何一种。可能还有很多其他的方法来实现这个解决方案
以下是使用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);