jquery在数组中存储值并比较差异

时间:2015-12-16 14:52:44

标签: javascript jquery jquery-ui autocomplete

我正在与autocomplete合作并且它的表现非常出色,但我似乎无法删除已经选择的值。我试过alert(usedTags),它肯定会将信息存储在usedTags中。我也试过了alert($(availableTags).not(usedTags).get());,它向我展示了我应该看到的差异......但是当我尝试添加另一个值时,它仍然向我展示了整个availableTags数组。添加源代码时是否有一些我缺失的内容?仅在第一个autocomplete上打开函数时才添加源?如果是这样,我每次添加值时如何更新...谢谢!

$(function() {
    var availableTags = [
        "jimmy",
        "barbie",
        "belle",
        "dylan",
        "tony",
        "lonnie"
    ];
    var usedTags = [];

    $("#labels").autocomplete({
        source: $(availableTags).not(usedTags).get(),
        minLength: 2,
        select: function(e, ui){
            e.preventDefault();
            $("<span class = 'added' id = '"+ ui.item.id + "'>").html( ui.item.value).appendTo($(this).parent().find('.addvals'));
            usedTags.push(ui.item.value);
            $(this).val('');
            //alert(usedTags);
            //alert($(availableTags).not(usedTags).get());
        }
    });
});

修改 出于这个问题的目的,我已经简化了我的availableTags数组,但我知道在数组中获取id会需要更复杂的数组。以防万一。“

1 个答案:

答案 0 :(得分:0)

您可以使用Array.prototype.filter()方法轻松完成此操作。

availableTags.filter(function(tag) {
    return (usedTags.indexOf(tag) === -1);
});