如何防止两次将值推入数组? (jQuery的)

时间:2013-10-09 17:23:01

标签: javascript jquery arrays

我有一个函数可以从HTML中的数据属性中获取唯一编号。就我而言,它被称为数据密钥,它将具有唯一的编号。

现在,当单击具有数据键的HTML元素旁边的按钮时,该键号将被推送到数组中。

我不希望多次将相同的数字放入数组中。

有一种简单的方法可以实现这一目标吗?我想象的方式是在推送之前检查该元素是否已经在数组中,但我觉得有一种更简单的方法?

我的Codepen:http://codepen.io/leongaban/pen/CEfxi

单击enter image description here按钮将输入值添加到数组中。

enter image description here < 6-1加两次

的jQuery

var deletedArray = [];

$('.remove_info').unbind('click').bind("click", function(event) {
    //console.log('clicked remove x');
    var value = $(this).prev().attr('value');
    var key = $(this).prev().data('key');

    deletedArray.push(key);
    console.log('this value = '+value+' deletedArray = '+deletedArray);
});

2 个答案:

答案 0 :(得分:8)

应该是注释,但在推送函数调用之前放置一个控制语句

  if (deletedArray.indexOf(key) < 0) deletedArray.push(key);

对于浏览器兼容性jQuery&#39; inArray

  if ($.inArray(key, deletedArray) < 0) deletedArray.push(key);

注意:indexOf与IE 8及更早版本

不兼容

答案 1 :(得分:0)

如果数组中的所有元素必须是唯一的,那么我真的建议使用Underscore的数组联合:

arr = ["1", 2, "apple"];

console.log(_.union(arr, 3)); //["1", 2, "apple", 3]
console.log(_.union(arr, 2)); //["1", 2, "apple"]