2016-01-13 3 views
-1

Я программирую функцию, которая дает мне все значения некоторых входных флажков и включает их в массив.Добавить в массив только один раз - оставив уникальные объекты

Функция:

$('#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"}] 

Это прекрасно!

Теперь я включаю в себя автоматически больше флажков с большим количеством значений. После этого моя функция освежает, и я включаю «новые» значения.

Теперь моя проблема заключается в том, что мой массив выглядит следующим образом:

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

Вы можете увидеть PLZ='42799' в два раза.

Я хочу найти повторяющиеся значения и удалить их из своего массива. Я пробую его с предложением if в моей функции. Но для меня ничего не работает.

+0

do каждый флажок '.area-checkbox' имеет уникальное значение? – gurvinder372

+0

Возможный дубликат [Удалить дубликаты из массива объектов в javascript] (http://stackoverflow.com/questions/2218999/remove-duplicates-from-an-array-of-objects-in-javascript) –

ответ

1

Предполагая, что значение каждого флажка является уникальным, вам необходимо сбросить значение test перед запуском each итератора

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

4 часа. и я не получаю этих решений ... наступают выходные. Спасибо! –

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); 
     } 

    }); 
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; 
    } 
});