那么继续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”),数组中 时,如您所见,控制台返回“不在数组中” 。我做错了什么?
答案 0 :(得分:0)
你用错了。你不能拥有包含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>
&#13;
如何创建数组是一种错误的方法,因为在您的情况下,您需要一个associative
数组(您试图放置键而不是数字)。请看这里:
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;