JavaScript中擴(kuò)展Array contains方法實(shí)例
首先腳本之家小編先為大家分享一個(gè)比較好用的代碼
Array.prototype.contains = function (a)
{
if ("string" == typeof a || "number" == typeof a) {
for (var b in this) {
if (a == this [b]) {
return!0;
};
}
}
return!1
};
先判斷傳入的參考是字符與數(shù)字才可以判斷,這樣就比較精準(zhǔn)。
下面是一些推薦資料可以看看
javascript的Array沒有contains方法,有時(shí)候這會(huì)不方便,contains方法實(shí)現(xiàn)很簡(jiǎn)單:
function contains(a, obj) {
var i = a.length;
while (i--) {
if (a[i] === obj) {
return true;
}
}
return false;
}
當(dāng)然我們也可以擴(kuò)展Array類,如下js
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
這樣就可以方便的使用contains方法了:
alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false
下面是腳本之家小編整理的幾種方法
一個(gè)小誤區(qū) JS中的contains
在Java語(yǔ)言中,contains可以用于判斷str1是否包含str2
原生JS中是有contains方法的
結(jié)構(gòu)與測(cè)試代碼如下
<div id="div1">
<div id="div2">
jb51.net
</div>
</div>
<script type="text/javascript">
var div1= document.getElementById("div1");
var div2= document.getElementById("div2");
console.log(div1.contains(div2));
var str1="jb51.net";
var str2="jb51";
console.log(str1.contains(str2));
</script>

但它并不是字符串方法,,僅用于判斷DOM元素的包含關(guān)系,參數(shù)是Element類型

若要在JS中判斷倆字符串的包含關(guān)系,用indexOf()

但是我們可以通過(guò)擴(kuò)展的方法來(lái)實(shí)現(xiàn)
<div id="div1">
<div id="div2">
jb51.net
</div>
</div>
<script type="text/javascript">
var div1= document.getElementById("div1");
var div2= document.getElementById("div2");
console.log("div1.contains(div2)="+div1.contains(div2));
//字符擴(kuò)展contains就不會(huì)報(bào)錯(cuò)了
String.prototype.contains = function(a) {
return - 1 < this.indexOf(a)
};
var str1="jb51.net";
var str2="jb51";
console.log("str1.contains(str2)="+str1.contains(str2));
//數(shù)組擴(kuò)展contains適用于數(shù)組判斷
Array.prototype.contains = function(a) {
if ("string" == typeof a || "number" == typeof a) for (var b in this) if (a == this[b]) return ! 0;
return ! 1
};
var arr1=["jb51.net","jbzj.com","jb51.com"];
var str3="jb51.net";
console.log("arr1.contains(str3)="+arr1.contains(str3));
</script>
下面是運(yùn)行結(jié)果

當(dāng)然也有通過(guò)正則實(shí)現(xiàn)的JS擴(kuò)展Array,添加contains方法
Array.prototype.contains = function(item){
return RegExp("\\b"+item+"\\b").test(this);
};
直接返回true/false
JS判斷Array數(shù)組中是否包含指定元素
1.調(diào)用方式:
var arr=["a","b"];
alert(arr.in_array("a"))
2.JS判斷數(shù)組是否包含指定元素方法定義:
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] === obj) {
return true;
}
}
return false;
}
或
Array.prototype.contains = function(element) {
for (var i = 0; i < this.length; i++) {
if (this[i] == element) {
return true;
}
}
return false;
}
或
Array.prototype.in_array = function(e) {
for(i=0; i<this.length && this[i]!=e; i++);
return !(i==this.length);
}
還有一個(gè)大牛是這樣寫的:
Array.prototype.S = String.fromCharCode(2);
Array.prototype.in_array = function(e) {
var r = new RegExp(this.S+e+this.S);
return (r.test(this.S+this.join(this.S)+this.S));
}
站外擴(kuò)展:
Jquery實(shí)現(xiàn)方式:http://api.jquery.com/jQuery.inArray/
具體選擇看個(gè)人需求,腳本之家小編建議能不用正則則不用,效率問題,代碼是簡(jiǎn)潔就怕一些老的瀏覽器不支持。
- 如何解決Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X
- Python extract及contains方法代碼實(shí)例
- javascript中contains是否包含功能實(shí)現(xiàn)代碼(擴(kuò)展字符、數(shù)組、dom)
- C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題
- Oracle 中Contains 函數(shù)的用法
- jQuery使用contains過(guò)濾器實(shí)現(xiàn)精確匹配方法詳解
- jQuery實(shí)現(xiàn)contains方法不區(qū)分大小寫的方法
- jQuery中:contains選擇器用法實(shí)例
- PowerShell Contains函數(shù)查找字符串實(shí)例
- Java contains用法示例
相關(guān)文章
javascript原生封裝一個(gè)淡入淡出效果的函數(shù)測(cè)試實(shí)例代碼
這篇文章主要介紹了javascript原生封裝一個(gè)淡入淡出效果的函數(shù),主要有FadeIn淡入函數(shù)和FadeOut淡出函數(shù),需要的朋友可以參考下2018-03-03
JavaScript算法題之如何將一個(gè)數(shù)組旋轉(zhuǎn)k步
這篇文章主要給大家介紹了關(guān)于JavaScript算法題之如何將一個(gè)數(shù)組旋轉(zhuǎn)k步的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03
使用js實(shí)現(xiàn)按鈕控制文本框加1減1應(yīng)用于小時(shí)+分鐘
正如標(biāo)題所言使用js實(shí)現(xiàn)按鈕控制文本框加1減1,此類主要應(yīng)用于小時(shí)+分鐘,下面有個(gè)不錯(cuò)的示例,喜歡的朋友可以參考下2013-12-12
Javascript 自適應(yīng)高度的Tab選項(xiàng)卡
選項(xiàng)卡的原理其實(shí)比較簡(jiǎn)單,就是設(shè)置2種狀態(tài),選中和未選中的2中不同CSS狀態(tài),因此也有直接不用JS之用css就能實(shí)現(xiàn)的效果2011-04-04
關(guān)于foreach循環(huán)中遇到的問題小結(jié)
這篇文章主要介紹了關(guān)于foreach循環(huán)中遇到的問題總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
JavaScript雙問號(hào)操作符(??)詳解及如何解決使用||時(shí)因類型轉(zhuǎn)換帶來(lái)的問題
雙問號(hào)操作符是ES2020引入的一個(gè)用于處理變量默認(rèn)值的新特性,與傳統(tǒng)的邏輯或操作符||不同,這篇文章主要介紹了JavaScript雙問號(hào)操作符(??)詳解及如何解決使用||時(shí)因類型轉(zhuǎn)換帶來(lái)的問題,需要的朋友可以參考下2025-04-04
整理Javascript數(shù)組學(xué)習(xí)筆記
整理Javascript數(shù)組學(xué)習(xí)筆記,之前一系列的文章是跟我學(xué)習(xí)Javascript,本文就是進(jìn)一步學(xué)習(xí)javascript數(shù)組,希望大家繼續(xù)關(guān)注2015-11-11

