我有一系列国家/地区。
var countriesArray = ["United States","Afghanistan","Albania","Algeria","Argentina","Australia","Austria", "Bahrain"];
我正在变量中获得一个国家的价值。
<div id="location" class="editable-item">
<dl><dt>Location</dt><dd><span class="locality"><a href="/vsearch/p?f_G=in%3A7127&trk=prof-0-ovw-location" name="location" title="Find other members in Bengaluru Area, India">Bengaluru Area, India</a></span></dd><dt>Industry</dt><dd class="industry"><a href="/vsearch/p?f_I=11&trk=prof-0-ovw-industry" name="industry" title="Find other members in this industry">Management Consulting</a></dd></dl></div>
var place = document.querySelector('#location .locality a').innerHTML;
var splitPlace = place.split(',');
var length = splitPlace.length;
var lastValue = splitPlace[length - 1] ;
这里lastValue有价值阿尔及利亚。
我想检查countriesArray中是否存在lastValue变量中的值。对于我使用的
console.log($.inArray(lastValue, countriesArray));
但是无论数组中是否存在值,它总是返回-1。在此中提出错误或者给出其他方法。此外,我希望不管情况如何都进行值的比较。
答案 0 :(得分:2)
这是一个 COMPLETE 示例
var countriesArray = ["united states", "afghanistan", "albania", "algeria", "argentina", "australia", "austria", "bahrain"];
$(function() {
var place = $('#location .locality a').html();
var splitPlace = place.split(',');
var length = splitPlace.length;
var lastValue = $.trim(splitPlace[length - 1]);
var found = $.inArray(lastValue.toLowerCase(), countriesArray)!=-1;
alert(lastValue+" was "+(found?"found":"not found"))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="location"><span class="locality"><a href=#">Algeria,Argentina,Australia,Austria,Bahrain</a></span></div>
$.inArray的原生替代 - indexOf var last = countriesArray [countriesArray.length-1]; 警报(countriesArray.indexOf(last.toLowerCase()修剪())= - 。!1)
答案 1 :(得分:2)
在您的代码lastValue
中" India"
。它以空格字符开头。您应该使用jQuery $.trim
或String.prototype.trim
函数修剪字符串。此外,数组没有India
元素,因此$.inArray
仍应返回-1
。
$.inArray($.trim(lastValue), countriesArray);
如果搜索不区分大小写,您可以使用String.prototype.toLowerCase
或String.prototype.toUpperCase
方法:
$.inArray(lastValue.trim().toLowerCase(), countriesArray.map(function(el) {
return el.toLowerCase();
}));
答案 2 :(得分:0)
以下应该这样做:
if(countriesArray.indexOf(lastValue) >= 0 )
{
alert("present");
}
else
{
alert("not present");
}
如果您希望它不区分大小写而不是更好的迭代
for(var i=0; i<lastValue.length; i++)
{
if(lastValue.toLowerCase().trim() == countriesArray[i].toLowerCase().trim())
{
alert("present");
break;
}
}
答案 3 :(得分:0)
试试这个,使用.trim()
修剪值,因为它可能包含前导和尾随空格:
if(countriesArray.toString().indexOf(lastValue.trim())>=0) {
alert(lastValue)
}