代码之家  ›  专栏  ›  技术社区  ›  Matthew Bennett

为什么使用jquery。inArray不适用于简单字符串?

  •  0
  • Matthew Bennett  · 技术社区  · 9 年前

    因此,从 the last question 为什么 jquery.inArray 在本例中不起作用?将IP地址链接到税率数组后,代码应检查该数组中是否有国家(因此需要缴纳其中一种税)。如果不是,则将税率设置为0。

    相同数组:

    var taxes_from_database = new Array();
      taxes_from_database["BE"]=27.7;
      taxes_from_database["ES"]=25.0;
      taxes_from_database["GB"]=23.5;
      …
    

    然后:

    if(jQuery.inArray("ES", taxes_from_database) != -1) {
    console.log("is in array");
    } else {
    console.log("is NOT in array");
    }
    

    当字符串为“ES”(或“25.0”)时,在浏览器中运行它 在数组中,如您所见,控制台返回“不在数组中”。我做错了什么?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Mihai Alexandru-Ionut    9 年前

    你用错了。不能有索引为的数组,如 BE , ES

    你必须使用 hasOwnProperty associative 数组,如下所示: var taxes_from_database = {}; .

    var taxes_from_database = {};
      taxes_from_database["BE"]=27.7;
      taxes_from_database["ES"]=25.0;
      taxes_from_database["GB"]=23.5;
    if(taxes_from_database.hasOwnProperty('ES')){
        console.log('is in array'); 
    }
    else{
        console.log('is NOT in array');  
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    您创建数组的方式是错误的,因为在您的情况下,您需要 联想 数组(您试图放置键而不是数字)。请看这里:

    var taxes_from_database = new Array();
      taxes_from_database["BE"]=27.7;
      taxes_from_database["ES"]=25.0;
      taxes_from_database["GB"]=23.5;
    
    console.log(taxes_from_database);
    
    var taxes_from_database = {};
      taxes_from_database["BE"]=27.7;
      taxes_from_database["ES"]=25.0;
      taxes_from_database["GB"]=23.5;
    
    console.log(taxes_from_database);