JS中如何判断数组中是否包含某一元素

JavaScript05

JS中如何判断数组中是否包含某一元素,第1张

可以直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,但是该方法在某些版本的IE中是不起作用,所以建议使用jquery的inArray方法,该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1,代码如下所示:

/**

 * 使用jquery的inArray方法判断元素是否存在于数组中

 * @param {Object} arr 数组

 * @param {Object} value 元素值

 */

 function isInArray2(arr,value){

    var index = $.inArray(value,arr)

    if(index >= 0){

        return true

    }

    return false

}

在C#语法中判断集合是否包含某个元素可以使用Contains方法,但是类似的问题在javascript中要怎么处理呢,js中没有Contains方法。

我们可以利用js的原型扩展来封装一个我们自己的Contains方法。

<script type="text/javascript">

$(function () {

Array.prototype.contains = function (element) { //利用Array的原型prototype点出一个我想要封装的方法名contains

for (var i = 0i <this.lengthi++) {

if (this[i] == element) { //如果数组中某个元素和你想要测试的元素对象element相等,则证明数组中包含这个元素,返回true

return true

}

}

}

//用一个例子来验证一些我们封装的方法

var $subCategoryID = $("#hidSubCategory").val()

var $subCategoryIDs = new Array()//构造一个数组对象

$subCategoryIDs = $subCategoryID.split(",")//为数组赋值

$("input[type=radio]").each(function () {

if ($subCategoryIDs.contains($(this).attr("id"))) { //利用contains方法判断数组中是否含有$(this).attr("id")

$(this).attr("checked", true)

}

})

})

</script>

可以使用数组的indexOf()方法,如果返回值为-1则说明不存在,如果返回值为大于-1的整数,则说明存在。例如:

var arr = [1,2,3]

arr.indexOf(1) // 返回0

arr.indexOf(5) // 返回-1

附:返回值为数组中的最靠前元素在数组的位置