2016-03-09 2 views
1

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

Вот код, который я пробовал, но не работал.

sample_array[0] = {'id' : 1, 'letter': 'a'}; 
sample_array[1] = {'id' : 2, 'letter': 'b'}; 
sample_array[2] = {'id' : 3, 'letter': 'c'}; 
sample_array[3] = {'id' : 4, 'letter': 'd'}; 
sample_array[4] = {'id' : 5, 'letter': 'e'}; 

input_id = 3; 
count_length = sample_array.length; 
input_letter = 'L'; 
idx = $.inArray(input_id, sample_array.id); // <- i think this is where it goes wrong. 

if(idx == -1) 
{ 
    //add to the array 
    sample_array[count_length] = {'id' : input_id, 'letter': input_letter};    
} 
else 
{ 
    //remove then add to the array 
    sample_array.splice(idx, 1); 
    sample_array[count_length] = {'id' : input_id, 'letter': input_letter}; 
} 
+0

следовать следующим образом: HTTP: // StackOverflow .com/questions/21809116/how-to-use-php-in-array-with-associative-array Надеюсь, это вам поможет. –

+0

Возможный дубликат [Почему jQuery.inArray не работает с массивом объектов] (http://stackoverflow.com/questions/19111707/why-jquery-inarray-doesnt-work-on-array-of-objects) – ozil

ответ

1

Вы ищете примитивное значение не является объектом, так

заменить от этой линии, начиная

idx = $.inArray(input_id, sample_array.id); 

с

sample_array.forEach(function(value,index){ 
    if(value.id==input_id) 
    { 
    sample_array.splice(index,1); 
    } 
}).length; 
sample_array.push({'id' : input_id, 'letter': input_letter}); 
+0

Я удалил .length, потому что получаю ошибку неопределенной длины массива. Он отлично работает, спасибо. Я очень ненавижу массивы в javascript. ха-ха – KennethC

Смежные вопросы