数组是否包含
Does array contain?
>我在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);
你完整的代码结构或实际实现。但是,我会采取两种方式中的任何一种。可能还有许多其他方法可以实现解决方案。
使用 http://api.jquery.com/html/复制 DIV 元素的 HTML在变量中。HTML 将存储为字符串。在字符串,看看"单词"是否存在。如果它有或没有,采取适当的行动。
创建一个临时数组。将键值对存储在该数组中。例如{"泊松","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];
}
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 此行是否包含函数声明
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- 是否在Script Src标记中包含Script<脚本>(JavaScript等)
- 是否可以在JavaScript中包含HTML代码
- 检查数组是否包含
- jQuery事件命名空间是否可以包含破折号
- 在添加或删除之前,正在使用检查classList是否包含类
- 确定数组是否包含偶数
- 如何检查 iframe 中的锚标记是否包含 URL
- 检查选择器在jQuery中是否包含文本(即不是媒体)
- 我是否应该在网站的每个页面上都包含 Google 地图脚本标签
- 如何检查数据表是否有任何包含字符串的行并获取它的行索引
- 在 html 文件中包含无缓存元标记是否也会阻止缓存该 html 文件中链接的 js 和 css 文件
- 检查字符串是否包含计算
- 使用 javascript 检查元素是否包含子标记而不是文本
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- JavaScript 如何检查包含数组的对象是否为空
- 测试两个变量是否包含一些数据 JavaScript