2016-03-01 74 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.What可能是问题。 什么,我想在这里是如果类别已不存在,那么它应该添加到相应的品牌object.If存在,那么它应该not.similarly没有两个品牌应该存在

+0

你后,我尝试这种解决方案只想做品牌或类别的检查? – 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只值,你推的brcat值作为一个对象,你不能直接使用​​

对它们进行比较

对于这个工作,你将需要遍历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

无法输入第一个条件 –

相关问题