仅添加一次数组 - 留下唯一的项目

时间:2016-01-13 10:20:58

标签: javascript jquery

我编写了一个函数,它给出了一些输入复选框的所有值,并将它们包含在一个数组中。

功能:

$('#area_tbl .checkbox').each(function(){
    /*for(var i = 0; i < test.length; i++){
        if(test[i].PLZ === $(this).find('.area-checkbox').val()){
            alert('Gleich');
        }else{
            alert('nicht gleich');
        }
    }*/
    test.push({PLZ:$(this).find('.area-checkbox').val()});
});

我的数组看起来像这样:

[Object { PLZ="42799"}]

那很好!

现在我自动包含更多值的复选框。之后,我的功能令人耳目一新,我加入了新的&#39;值。

现在我的问题是我的数组看起来像这样:

 [Object { PLZ="42799"}, Object { PLZ="42799"}, Object { PLZ="51399"}]

您可以看到PLZ='42799'两次。

我想找到重复的值并从我的数组中删除它们。我在我的函数中使用if子句尝试它。但没有什么对我有用。

3 个答案:

答案 0 :(得分:1)

假设每个复选框的值都是唯一的,您需要在运行此test迭代器之前重置each

  test = [];
  $('#area_tbl .checkbox').each(function(){
        test.push({PLZ:$(this).find('.area-checkbox').val()});
   });

答案 1 :(得分:0)

你可以使用记忆

    // The memory will be a simple list with the already added elements. Firstly empty
    memory = []

    // we loop over ther checboxes
    $('#area_tbl .checkbox').each(function(){

        // we store the value
        var v = $(this).find('.area-checkbox').val();

        // If memory doesn't content the value... (its position is -1)
        if(memory.indexOf(v) == -1){

            // we store the object and we update the memory
            test.push({PLZ:v});
            memory.push(v);
        }

    });

答案 2 :(得分:0)

您可以使用临时对象并查看访问该属性:

var object= {};

$('#area_tbl .checkbox').each(function() {
    var v = $(this).find('.area-checkbox').val();
    if (!object[v]) {
        test.push({PLZ: v});
        object[v] = true;
    }
});