无法使用Jquery拼接数组值

时间:2016-04-14 03:00:09

标签: javascript jquery

我正在插入并删除数组中的值。如果值不存在,则插入如果EXISTED将其删除。但是我有一个简单的条件来检查所选值是否大于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为

的简单数组

你能发现我哪里出错吗?

1 个答案:

答案 0 :(得分:3)

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

ids.splice(selected, 1);

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

ids.splice(findValue, 1);