【问题标题】:Cant splice array value using Jquery无法使用 Jquery 拼接数组值
【发布时间】:2016-04-14 03:00:08
【问题描述】:

我正在数组中插入和删除值。如果一个值不存在,则插入,如果存在则删除它。但是我有一个简单的条件来检查所选值是否大于 3。如果大于 3,则不要添加到数组中并进行简单通知。

我的问题是如果它已经存在,我无法删除它。 这是我的简单代码:

var limit = 3;
var findValue;
var ids = [];

function findIfExist(selected) {
    var findValue = jQuery.inArray(selected, ids);
    console.log(findValue);
    if(findValue >= 0) {
        ids.splice(selected, 1);
    } else {
        ids.push(selected);
    }
}

$('input[name="services[]"]').on('change', function(evt) {
    var count = $('input[name="services[]"]:checked').length;
    var selected = $(this).val();

    if(count > 3) {
        bootbox.alert({
            title: 'Oops',
            message: 'Only 3 services are allowed from the registration',
            size: 'small'
        });
        $(this).prop('checked', false);
        findIfExist(selected);
    } else {
        findIfExist(selected);  
    }
    console.log(ids);
});

示例输出是一个带有 ID 的简单数组

你能看出我哪里做错了吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    Array#splice 使用要删除的元素的索引,而不是元素本身。

    ids.splice(selected, 1);
    

    在这里,您将元素传递给splice()。使用索引findValue

    ids.splice(findValue, 1);
    

    【讨论】:

    • @Jerielle 欢迎 :)
    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 2018-06-29
    • 2017-08-31
    • 2020-12-25
    • 1970-01-01
    • 2012-03-25
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多