您好,登錄后才能下訂單哦!
一、問(wèn)題
在js中是不能直接用“==”或者“===”來(lái)計(jì)算兩個(gè)數(shù)組是否相等的,那么就需要對(duì)數(shù)組的值進(jìn)行比較;
二、次解決方案
對(duì)于比較兩個(gè)數(shù)組次要的方法有如下幾種,為什么說(shuō)是次要解決方案呢?因?yàn)樗荒苷嬲Q之為對(duì)兩個(gè)數(shù)組的對(duì)比。
1. 把兩個(gè)數(shù)組轉(zhuǎn)化為字符串的形式比較,如下:
a. 當(dāng)兩個(gè)數(shù)組元素類型相同,順序相同時(shí),直接判斷是否相等,結(jié)果不相等;轉(zhuǎn)化為字符串后,結(jié)果相等;
var a=[1, 2, 3, 4]; var b = a.slice(); console.log(a); console.log(b); console.log(a == b); console.log(JSON.stringify(a) == JSON.stringify(b));
運(yùn)行結(jié)果:
2.當(dāng)兩個(gè)數(shù)組元素類型不同,順序相同時(shí),用toString()轉(zhuǎn)化為字符串,結(jié)果相等;用stringify轉(zhuǎn)化為字符串,結(jié)果不相等;
var a=[1, 2, 3, 4]; var b = ['1', 2, 3, 4]; console.log(a); console.log(b); console.log(a.toString() == b.toString()); console.log(JSON.stringify(a) == JSON.stringify(b));
運(yùn)行結(jié)果如下:
3. 當(dāng)兩個(gè)數(shù)組不相同時(shí),先排序,再轉(zhuǎn)化為Json字符串比較,結(jié)果相等:
var a = [1, 2, 3, 4]; var b = [4, 2, 3, 1]; console.log(a.sort()); console.log(b.sort()); console.log(JSON.stringify(a.sort()) == JSON.stringify(b.sort()));
運(yùn)行結(jié)果:
4.當(dāng)數(shù)組包含Object時(shí),先排序,再進(jìn)行比較,結(jié)果相等:
var a=[{"x":"abc"}, 2, 3, 4]; var b = [4, 2, 3, {"x":"abc"}]; console.log(a.sort()); console.log(b.sort()); console.log(JSON.stringify(a.sort()) == JSON.stringify(b.sort()));
運(yùn)行結(jié)果:
從以上可以看出:
1. 如果兩個(gè)數(shù)組元素類型相同,順序相同時(shí),用stringify轉(zhuǎn)化為字符串后進(jìn)行比較;
2. 如果兩個(gè)數(shù)組元素類型相同,順序不相同時(shí),排序后,用stringify轉(zhuǎn)化為字符串再進(jìn)行比較;
3.兩個(gè)數(shù)組元素類型不同時(shí),用stringify轉(zhuǎn)化為字符串后進(jìn)行比較,數(shù)組不相等;用toString()轉(zhuǎn)化為字符串后進(jìn)行比較,數(shù)組相等;
以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),內(nèi)容還需要待補(bǔ)充,后期小編會(huì)完善相關(guān)內(nèi)容,跟多內(nèi)容可以在下方的相關(guān)文章學(xué)習(xí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。