为什么这个jquery.inArray对一个简单的字符串不起作用?

时间:2017-01-07 13:01:58

标签: javascript jquery arrays if-statement

那么继续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 个答案:

答案 0 :(得分:0)

你用错了。你不能拥有包含BEES等索引的数组。

您必须使用hasOwnPropertyassociative数组,如下所示: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>
&#13;
&#13;
&#13;

如何创建数组是一种错误的方法,因为在您的情况下,您需要一个associative数组(您试图放置键而不是数字)。请看这里:

&#13;
&#13;
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);
&#13;
&#13;
&#13;