javascript - 从 DIV 创建数组,然后检查相似性

标签 javascript jquery arrays append

必须制作一个表单并检查用户是否在文本区域中写入了某个单词。所有这些单词都位于由 div 创建的数组中。我陷入了验证部分,我认为我没有以正确的方式创建数组。

检查这个jsfiddle更好地理解我想要做什么。

<select class="items"></select>
<textarea></textarea>
<div class="sport md">
    <p class="word">word1</p>
    <p class="word">word2</p>
    <p class="word">word3</p>
</div>
<div class="culoare md">
    <p class="word">word1</p>
    <p class="word">word2</p>
    <p class="word">word3</p>
</div>

// POpulare selectbox with options
var menu = ['sport', 'culoare'];
var op = '';
for (var i = 0; i < menu.length; i++) {
    op += '<option value="' + menu[i] + '">' + menu[i] + '</option>';
}
$('.items').append(op);
$('.items').on('change', function () {
    $('.md.active').removeClass('active');
    var appWords = $('.md.' + $(this).val());
    if (appWords.length) {
        appWords.addClass('active');
    }
});

var array = new Array();
$('.md').each(function () {
    array.push($(this).children());
});
$('textarea').on('keyup', function () {
    console.log(array);
    var key = $(this).val().split(' ');
    console.log(key);
    if (key.indexOf(array) > -1) {
        console.log('match');
    }
});

.md{
    display:none;
}
.md.active{
    display:block;
}

最佳答案

您是正确的,因为您的阵列没有正确构建。您有一个段落元素数组。您想要的是这些段落元素的文本数组。为此,请使用 jQuery .map() 函数。

var array = $(".md p").map(function(){
    return $(this).text();
});

您最后的匹配比较也存在问题。你有 2 个数组。您不能使用 indexOf 来查找两个数组的相交位置。使用 jQuery $.grep 和 $.inArray。

var common = $.grep(key, function(element) {
                return $.inArray(element, array ) !== -1;
            });

查看你的 fiddle 的更新: http://jsfiddle.net/1skw4e2b/1/

关于javascript - 从 DIV 创建数组,然后检查相似性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32912676/

相关文章:

java - Java数组如何实现Cloneable?

python - 如何使用 Python 对同名数组进行分组?

javascript - 如何在 javascript/jquery 中更改 iframe 高度?

javascript - 在 Highcharts 中间缺少一系列数据时如何继续图形线

c - 在C中操纵char数组-空指针?

javascript - Safari contenteditable div 焦点

javascript - 垂直菜单/导航自动滚动

javascript - 了解 html 中外部 .js 文件的 "order matters"

javascript - 为什么 HighStock 范围选择器中有禁用按钮?以及如何启用它们?

javascript - 使 jQuery 单击 anchor 在 Firefox 上工作