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

jquery store value in array and compare differences

本文关键字:比较 数组 存储 jquery      更新时间:2023-09-26

我正在使用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需要一个更复杂的数组。以防这对任何人来说都很突出。

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

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