2016-03-01 4 views
0

У меня есть следующий сценарий, где мой массив параметров содержит два массиваКак проверить, существует ли значение в массиве Jquery

<script> 
    var parameter = []; 
    var brand; 
    var category = []; 

$(function() { 
    $('#brand_category').click(function(event){ 
     var newhtml=""; 
     var Html = ""; 
     var cat_li = ""; 
     var $table = $('table#tablerow') 
     var added = ""; 

     if($('input[name=brand]:checked').length<=0) 
     { 
     alert("Please Select brand") 

     } 

     if($('input[name=category]:checked').length<=0) { 

     alert("Please Select Category") 
     } 

     else { 
     cat = $("input:checkbox[name=category]:checked").map(function() { 
     return this.value; 
     }).get(); 


     br = $("input[type='radio']:checked").map(function() { 
     return this.value; 
     }).get(); 

     var found = jQuery.inArray(br, parameter); 
     console.log(found) 

     parameter.push({ 
      brand : br, 
      category: cat, 
     }); 
}); 

</script> 

словаря параметра выглядит следующим образом

Array[2] 
0: Object 
brand: Array[1] 
0: "spykar" 
length: 1 
__proto__: Array[0] 
category: Array[1] 
0: "Men Jeans" 
length: 1 
__proto__: Array[0] 
__proto__: Object 
1: Object 
brand: Array[1] 
0: "Madame" 
length: 1 
__proto__: Array[0] 
category: Array[1] 
__proto__: Object 
length: 2 
__proto__: Array[0] 

Я хочу, чтобы подтолкнуть к если значение не существует, и если оно существует, то оно не должно быть push.I пытался использовать inArray(), но он всегда возвращает -1. Какая может быть проблема. Что я хочу здесь, если категория уже не присутствует, то он должен добавить соответствующую бренд object.If представить тогда не должно not.similarly никаких две марки должна присутствовать

+0

You только хотите сделать проверку для бренда или для этой категории? – NiZa

+0

Что я хочу здесь, если категория еще не присутствует, то она должна добавить к соответствующему бренд-объекту. Если подарок тогда не должен. Аналогично, не должно присутствовать две марки. –

ответ

0

я попытался это решение после прочтения некоторые ответы

$.map(parameter, function(elementOfArray, indexInArray) { 
     for (var key in elementOfArray.brand) { 
     if (elementOfArray.brand.hasOwnProperty(key)) { 
       if (elementOfArray.brand[key] == br) { 
       added = true 
      } 
     } 
     } 
    }); 
    console.log(added); 

    if (!added) { 
     parameter.push({ 
     brand : br, 
     category: cat 
    }); 
0

Простого решение ::

var parameter = []; 

    cat = $("input:checkbox[name=category]:checked").map(function() { 
    return this.value; 
    }).get(); 


    br = $("input[type='radio']:checked").map(function() { 
    return this.value; 
    }).get(); 

$.map(parameter, function(elementOfArray, indexInArray) { 

    if (elementOfArray.brand == br) { 
    console.log('true');//do what you need on found 

    parameter.push({ 
      brand : br, 
      category: cat 
     }); 

}else{ 
    console.log('false');//do what you need on not found 
} 
}); 

ссыл :: this link

+0

. Вы нажимаете данные перед проверкой. –

+0

Условие if не соответствует ... проверьте выше –

+0

Я только что сказал вам логику проверки и нажав arry ...... давай, я изменил его, как вы сказали, пожалуйста, проверьте сейчас. –

1

Потому что вы не толкая только значение br, вы толкая значения br и cat как объект, вы не можете напрямую сравнивать их с помощью inArray()

Для этого на работу, вам нужно перебрать parameter и проверить значение каждого объекта внутри него против br

var found = -1; 
for (i=0;i<parameter.length;i++){ 
    if (parameter[i].brand == br) { 
     found = i; 
    } 
} 

if (found < 0){ 
    parameter.push({ 
     brand: br, 
     category: cat 
    }); 
} 
+0

Невозможно войти в первое условие if –