想要检查变量是否存在于数组中

时间:2015-04-29 05:21:48

标签: javascript jquery arrays

我有一系列国家/地区。

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&amp;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&amp;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。在此中提出错误或者给出其他方法。此外,我希望不管情况如何都进行值的比较。

4 个答案:

答案 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 $.trimString.prototype.trim函数修剪字符串。此外,数组没有India元素,因此$.inArray仍应返回-1

$.inArray($.trim(lastValue), countriesArray);

如果搜索不区分大小写,您可以使用String.prototype.toLowerCaseString.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)
}

FIDDLE DEMO