js數組方法解析


  1. join()
     1 // 數組轉字符串
     2 var arr = [1,2,3];
     3 console.log(arr.join()); // 1,2,3
     4 console.log(arr.join("-")); // 1-2-3
     5 // 通過join()方法可以實現重復字符串,只需傳入字符串以及重復的次數,就能返回重復后的字符串,函數如下:
     6 function repeatString(str, n) {
     7      return new Array(n + 1).join(str);
     8 }
     9 console.log(repeatString("abc", 3)); // abcabcabc
    10 console.log(repeatString("Hi", 5)); // HiHiHiHiHi
  2. push()和pop()
    1 push(): 可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改后數組的長度。 
    2 pop():數組末尾移除最后一項,減少數組的 length 值,然后返回移除的項。
  3. shift() 和 unshift()
    1 shift():刪除原數組第一項,並返回刪除元素的值;如果數組為空則返回undefined 。 
    2 unshift:將參數添加到原數組開頭,並返回數組的長度 。
  4. sort()
     1 // sort():按升序排列數組項,即最小的值位於最前面,最大的值排在最后面
     2 // 在排序時,sort()方法會調用每個數組項的 toString()轉型方法,然后比較得到的字符串,以確定如何排序。即使數組中的每一項都是數值, sort()方法比較的也是字符串,因此會出現以下的這種情況:
     3 let arr1 = ["a", "d", "c", "b"];
     4 console.log(arr1.sort()); // ["a", "b", "c", "d"]
     5 let arr2 = [13, 24, 51, 3];
     6 console.log(arr2.sort()); // [13, 24, 3, 51]
     7 console.log(arr2); // [13, 24, 3, 51](元數組被改變)
     8 
     9 // 為了解決上述問題,sort()方法可以接收一個比較函數作為參數,以便指定哪個值位於哪個值的前面。比較函數接收兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等則返回 0,如果第一個參數應該位於第二個之后則返回一個正數。以下就是一個簡單的比較函數:
    10 function compare(value1, value2) {
    11     if (value1 < value2) {
    12         return -1;
    13     } else if (value1 > value2) {
    14        return 1;
    15     } else {
    16        return 0;
    17     }
    18 }
    19 let arr2 = [13, 24, 51, 3];
    20 console.log(arr2.sort(compare)); // [3, 13, 24, 51]
    21 // 如果需要通過比較函數產生降序排序的結果,只要交換比較函數返回的值即可:
    22 function compare(value1, value2) {
    23     if (value1 < value2) {
    24        return 1;
    25     } else if (value1 > value2) {
    26        return -1;
    27     } else {
    28       return 0;
    29     }
    30 }
    31 let arr2 = [13, 24, 51, 3];
    32 console.log(arr2.sort(compare)); // [51, 24, 13, 3]
  5. reverse()
  6. concat()
  7. slice()
  8. splice()
  9. indexOf()和 lastIndexOf()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM