国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Js如何判斷兩個數(shù)組是否相等?

這篇具有很好參考價值的文章主要介紹了Js如何判斷兩個數(shù)組是否相等?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。



日常開發(fā),時不時會遇到需要判定2個數(shù)組是否相等的情況,需要實現(xiàn)考慮的場景有:

  • 先判斷長度,長度不等必然不等
  • 元素位置
  • 其他情況考慮
    • '1'1 (Object的key是字符串, Map的key沒有限制)
    • NaN
    • nullundefined

1、通過數(shù)組自帶方法比較

// 方式1
function isArrEqual1(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.every((v, i) => v === arr2[i]);
  // return !arr1.some((v, i) => v !== arr2[i]);
  // return arr1.filter((v, i) => v !== arr2[i]).length === 0;
  // return arr1.findIndex((v, i) => v !== arr2[i]) === -1;
}

// 測試
const arr1 = [-2, "-1", 0, 0.1, 1, "2", "a", "", undefined, null],
  arr2 = [-2, "-1", 0, 0.1, 1, "2", "a", "", undefined, null];

isArrEqual1(arr1, arr2); // true

數(shù)組自帶的方法,比較適合的有:every、some、filter、findIndex。

這種方式嚴(yán)格限制了數(shù)組元素長度、類型、位置必須一致。

注意包含NaN也無法比較!NaN是JS中唯一一個與自身不相等的存在!判斷NaN是否屬于同一個值得用Object.is(),如:Object.is(NaN, NaN); // true

2、通過循環(huán)判斷

// 方式2
function isArrEqual2(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  for (let i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i]) {
      return false;
    }
  }
  return true;
}

這種判定方法限制及說明同上述方法1。

3、toString()

// 方式3
function isArrEqual3(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.toString() === arr2.toString();
}

// 測試
isArrEqual3(arr1, arr2); // true

const arr3 = ['', 1, null, undefined, {}, { a: 1 }, NaN, [], [2, 3], new Date()],
  arr4 = ['', "1", undefined, null, {}, { a: 2 }, NaN, [], [2, "3"], new Date()];

isArrEqual3(arr3, arr4); // true

toString 方法是Object類型對象的實例方法,作用是返回一個對象的字符串形式。

這種方式限制了數(shù)組長度和元素位置,但是會發(fā)現(xiàn)有些元素類型沒有嚴(yán)格限制,這是由于js本身進(jìn)行的數(shù)據(jù)隱式轉(zhuǎn)換!

在控制臺查看通過toString轉(zhuǎn)化后的數(shù)組,得到的結(jié)果如下:
Js如何判斷兩個數(shù)組是否相等?,web前端,JavaScript,javascript,前端,開發(fā)語言,判斷兩個數(shù)組相等,數(shù)組比較,js數(shù)組比較,js

此外,對數(shù)組、空數(shù)組、對象、空對象等引用類型,由于toString轉(zhuǎn)換結(jié)果都是[object Object],所以在比較的時候都會判定為相等!

還有,需要注意:

null == undefined // true
null === undefined // false

4、join()

// 方式4
function isArrEqual4(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return arr1.join() === arr2.join();
}

join 方法是數(shù)組的一個實例方法,如果join這個方法如果不傳如分割符,其實作用幾乎和toString一樣,所以實現(xiàn)效果和限制同toString。
Js如何判斷兩個數(shù)組是否相等?,web前端,JavaScript,javascript,前端,開發(fā)語言,判斷兩個數(shù)組相等,數(shù)組比較,js數(shù)組比較,js

5、JSON.stringify()

// 方式5 [推薦]
function isArrEqual5(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  return JSON.stringify(arr1) === JSON.stringify(arr2);
}

// 測試
isArrEqual5(arr1, arr2); // true
isArrEqual5(arr3, arr4); // false

const arr5 = [undefined, null, "", {}, { a: 1 }, NaN, [], [2, 3], new Date()],
  arr6 = [undefined, null, "", {}, { a: 1 }, NaN, [], [2, 3], new Date()];

isArrEqual5(arr5, arr6); // true

JSON.stringify 用于將一個對象或值轉(zhuǎn)換成JSON字符串,轉(zhuǎn)換后結(jié)果會帶雙引號。
Js如何判斷兩個數(shù)組是否相等?,web前端,JavaScript,javascript,前端,開發(fā)語言,判斷兩個數(shù)組相等,數(shù)組比較,js數(shù)組比較,js

從測試結(jié)果可以看到,這個比較方式也嚴(yán)格的限制了數(shù)組長度、元素位置和元素類型,在日常中比較推薦此種方案~文章來源地址http://www.zghlxwxcb.cn/news/detail-836204.html

到了這里,關(guān)于Js如何判斷兩個數(shù)組是否相等?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JavaScript判斷兩個數(shù)組相等的四類方法

    在JavaScript中,數(shù)組本質(zhì)上是一種特殊的對象,它的類型值會返回 object 。 如果我們需要比較兩個數(shù)組是否相等,不能像比較基本類型(String、Number、Boolean等)一樣,使用 === (或 == ) 來判斷,所以如果要比較數(shù)組是否相等,需要使用一些特殊方法。關(guān)于JS類型的判斷,可見博文

    2024年02月09日
    瀏覽(96)
  • js 判斷兩個字符串是否相等(有兩種方法)

    使用比較運算符判斷兩個字符串是否相等 可以使用比較運算符 === 或 == 來判斷兩個字符串是否相等。例如: 在上述代碼中,我們定義了兩個字符串變量 str1 和 str2 ,并使用 === 運算符來比較它們的值。如果兩個字符串相等,則輸出 兩個字符串相等 ;否則輸出 兩個字符串不相

    2024年02月05日
    瀏覽(108)
  • Go語言如何判斷兩個對象是否相等

    在編程中,判斷兩個對象是否相等是一項常見的任務(wù),同時判斷對象是否相等在很多情況下都非常重要,例如: 單元測試 :編寫單元測試時,經(jīng)常需要驗證函數(shù)的輸出是否符合預(yù)期,這涉及到比較對象是否相等。 數(shù)據(jù)結(jié)構(gòu)操作 :在使用 map 等數(shù)據(jù)結(jié)構(gòu)時,可能需要判斷兩個對

    2024年02月07日
    瀏覽(646)
  • Python字符串比較:如何判斷兩個字符串是否相等?

    Python字符串比較:如何判斷兩個字符串是否相等? 在Python編程中,字符串是最常用的數(shù)據(jù)類型之一。當(dāng)我們需要比較兩個字符串時,通常需要判斷它們是否相等。這篇文章將詳細(xì)介紹Python中比較兩個字符串的方法。 使用“==”運算符比較字符串 在Python中,可以使用“==”運算

    2023年04月11日
    瀏覽(111)
  • java 判斷兩個List是否包含 判斷兩個list相等

    java 判斷兩個List是否包含 判斷兩個list相等 https://blog.51cto.com/u_12855/7333853 1、直接使用equals()比較 眾所周知,兩個列表具有完全相同的元素并且具有完全相同的順序時,它們是相等的。因此, 如果我們業(yè)務(wù)要求兩個list順序一致,可以使用equals()方法進(jìn)行相等性檢查: 即使

    2024年02月04日
    瀏覽(132)
  • JavaScript - 判斷當(dāng)前時間是否在指定區(qū)間內(nèi),例如:9:00~12:00(檢查當(dāng)前時間是否處于規(guī)定的兩個時間段范圍內(nèi)),適用于 vue.js / uniapp / 微信小程序等前端項目

    例如,您想知道當(dāng)前時間是否處于 9:00 ~ 12:00 時間區(qū)間內(nèi),然后根據(jù)這個判斷進(jìn)而實現(xiàn)業(yè)務(wù)邏輯。 如下示例所示, 本文提供一個函數(shù),您只需要傳入 2 個時間區(qū)間,便可得出當(dāng)前時間是否在該時間區(qū)間范圍內(nèi): 您可以一鍵復(fù)制,直接粘貼到您的項目中。 您只需要傳入開始時

    2024年02月16日
    瀏覽(50)
  • 【python基礎(chǔ)知識】python中怎么判斷兩個字符串是否相等

    【python基礎(chǔ)知識】python中怎么判斷兩個字符串是否相等

    目錄 有哪些判斷方法 1. == 運算符 2. is 運算符 有哪些特殊情況 1. 字符串中包含空格、換行符、制表符等特殊字符 2. 字符串編碼格式的不同 3. 字符串對象的創(chuàng)建方式不同 注意事項 1. 避免使用is運算符進(jìn)行字符串比較 2. 注意空格、換行符、制表符等特殊字符的影響 3. 注意字符

    2024年02月08日
    瀏覽(112)
  • JavaScript數(shù)組(四):判斷數(shù)組相等的4種方法

    在JavaScript中,數(shù)組本質(zhì)上是一種特殊的對象,它的類型值會返回 object 。 如果我們需要比較兩個數(shù)組是否相等,不能像比較基本類型(String、Number、Boolean等)一樣,使用 === (或 == ) 來判斷,所以如果要比較數(shù)組是否相等,需要使用一些特殊方法。關(guān)于JS類型的判斷,可見博文

    2024年02月01日
    瀏覽(26)
  • rust里如何判斷字符串是否相等呢?

    在 Rust 中,有幾種方法可以判斷字符串是否相等。下面是其中幾種常見的方法: 使用 == 運算符:可以直接使用 == 運算符比較兩個字符串是否相等。例如: 這段代碼會輸出 “字符串不相等”,因為 str1 和 str2 不是相同的字符串。 2. 使用 eq 方法:字符串類型實現(xiàn)了 PartialEq

    2024年02月14日
    瀏覽(128)
  • 前端基礎(chǔ)面試題:如何判斷對象是否具有某屬性?遍歷數(shù)組的方法有哪些?

    前端基礎(chǔ)面試題:如何判斷對象是否具有某屬性?遍歷數(shù)組的方法有哪些?

    一、如何判斷對象具有某屬性? 如: let obj={name:\\\'zhangsan\\\',age:21} 有以下方法 ( property 為屬性名的變量,實際上是key,鍵名): 1. property in obj 效果如圖: in 運算符 2. Reflect.has(obj, property) 效果如圖: 關(guān)于 Reflect: ① 它是JS的一個內(nèi)置對象,無構(gòu)造函數(shù),可以用它遍歷對象的key,如

    2023年04月08日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包