我有以下场景,其中我的参数数组包含两个数组
<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。可能是什么问题。 我想要的是,如果该类别尚未存在,那么它应该添加到相应的品牌对象。如果存在那么它不应该同样没有两个品牌应该存在
答案 0 :(得分:1)
因为您不仅仅推动br
的价值,而是将br
和cat
的值作为对象,您可以&#39; t使用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
});
}
答案 1 :(得分: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
}
});
ref :: this link
答案 2 :(得分: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
});