javascript檢測(cè)兩個(gè)數(shù)組是否相似
JS要比較兩個(gè)數(shù)組是否有相同的元素,即兩個(gè)數(shù)組所有元素都相同,但元素的順序不一定一致。只就需要先將數(shù)組進(jìn)行排序,再比較兩個(gè)數(shù)組是否相等。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>js 檢測(cè)兩個(gè)數(shù)組是否相似</title>
</head>
<body>
<script>
//數(shù)組中的成員類型相同,順序可以不同。例如[1, true] 與 [false, 2]是相似的。
//數(shù)組的長(zhǎng)度一致。
//類型的判斷范圍,需要區(qū)分:String, Boolean, Number, undefined, null, 函數(shù),日期, window.
function arraysSimilar(arr1, arr2){
//判斷邊界
if (!(arr1 instanceof Array) || !(arr2 instanceof Array)) {
return false;
}
//判斷長(zhǎng)度
if (arr1.length != arr2.length) return false;
var i = 0, n = arr1.length, countMap1 = {}, countMap2 = {}, t1, t2, TYPES = ['string', 'boolean', 'number', 'undefined', null, 'function', 'date', 'window'];
for ( ; i < n; i++) {
t1 = typeOf(arr1[i]);
t2 = typeOf(arr2[i]);
if (countMap1[t1]) {
countMap1[t1] ++;
}else{
countMap1[t1] = 1;
}
if (countMap2[t2]) {
countMap2[t2] ++;
}else{
countMap2[t2] = 1;
}
}
function typeOf(ele){
var r;
if (ele === null) r = 'null';
else if(ele instanceof Array) r = 'array';
else if(ele === window) r = 'window';
else if(ele instanceof Date) r = 'date';
else r = typeof ele;
return r;
}
for (i = 0; i < TYPES.length; i++) {
if (countMap1[TYPES[i]] != countMap2[TYPES[i]]) return false;
}
return true;
}
document.write(arraysSimilar([1,true], [false, 2]));
</script>
</body>
</html>
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
js模式化窗口問題![window.dialogArguments]
這篇文章主要介紹了js模式化窗口問題![window.dialogArguments],需要的朋友可以參考下2016-10-10
javascript實(shí)現(xiàn)根據(jù)iphone屏幕方向調(diào)用不同樣式表的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)根據(jù)iphone屏幕方向調(diào)用不同樣式表的方法,涉及javascript針對(duì)樣式表動(dòng)態(tài)操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-07-07
產(chǎn)制造追溯系統(tǒng)之通過微信小程序?qū)崿F(xiàn)移動(dòng)端報(bào)表平臺(tái)
這篇文章主要介紹了產(chǎn)制造追溯系統(tǒng)-通過微信小程序?qū)崿F(xiàn)移動(dòng)端報(bào)表平臺(tái) ,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
javaScript生成支持中文帶logo的二維碼(jquery.qrcode.js)
這篇文章主要介紹了javaScript生成二維碼,改造jquery.qrcode.js,使之支持中文,能帶logo的二維碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
innerText innerHTML的用法以及注意事項(xiàng) [推薦]
我們常常需要使用另外一些對(duì)象的屬性來實(shí)現(xiàn)動(dòng)態(tài)改變其中的文本,它們就是:innerText,outerText,innerHTML,outerHTML,千萬要注意它們的大小寫,因?yàn)殄e(cuò)一點(diǎn)您就得不到預(yù)期的效果了。2009-05-05

