如何检查Array Jquery中是否存在值

How to Check if A Value exists in Array Jquery

我有以下场景,其中我的参数数组包含两个数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  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,
        });
 });

参数字典如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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]

如果该值不存在,我希望将其推到参数;如果该值存在,则不应将其推到参数。我尝试使用inarray(),但它始终返回-1。可能有什么问题。这里我想要的是,如果类别还没有出现,那么它应该添加到相应的品牌对象中。如果存在,那么它就不应该出现。同样,不应该出现两个品牌。


因为你不只是推br的值,你是推brcat的值作为一个对象,你不能用inArray()直接比较它们。

为此,您需要循环遍历parameter,并根据br测试其中每个对象的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$.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
    });


简单解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
 }
});

参考::此链接