數組的api以及api的簡單使用


一、對原數組造成影響的api

  1.push() 在最后添加

  eg: 原數組:      var arr = [5, 20, 6, 5, 80, 4]

    使用push()之后:  arr.push(123);     變為: [5, 20, 6, 5, 80, 4,123]

  2.pop() 取出最后一個
  eg: 原數組:      var arr = [5, 20, 6, 5, 80, 4]
    使用pop()之后:  arr.pop();     變為: [5, 20, 6, 5, 80]
  3.unshift() 在前面添加
  eg: 原數組:      var arr = [5, 20, 6, 5, 80, 4]
    使用unshift()之后:  arr.unshift(123);     變為: [123,5, 20, 6, 5, 80,4]
  4.shift() 取出第一個
   eg: 原數組:      var arr = [5, 20, 6, 5, 80, 4]
    使用shift()之后:  arr.shift();     變為: [20, 6, 5, 80,4]
  5.sort() 方法,對數組排序
    參數為一個回調函數!!!
    如果沒有參數:則是按照第一位的ascII碼排序
  eg:    原數組:      var arr = [5, 20, 6, 5, 80, 4]
    使用sort():    
               arr.sort(function (val1, val2) {
      // return val1-val2; //val1-val2< 0 ,從小到大排列
      return val2 - val1; //val1-val2> 0 ,從大到小排列
    });
二、不對元素組進行操作
  1.concat 數組的拼接 不會對原數組造成影響
 
   eg:    var arrl = [1,2,3,4];
      var arr2 = [11,12,13,14];
      var newArr = arrl.concat(arr2);
      console.log(newArr);
  
  運行結果:[1, 2, 3, 4, 11, 12, 13, 14]
 
  2.join("") 將數組分割成字符串,按照所填的字符 不會對原數組造成影響
 
  eg: var arrl = [1,2,3,4];
     var arr2=arrl.join("-");
    console.log(arr2);
 
  運行結果:1-2-3-4

  3.toString 將數組轉化為字符串,將數組元素用逗號隔開 不改變原數組
 
  eg:    var arrl = [1,2,3,4];
      var arr2= arrl.toString();
      console.log(arr2);
 
  運行結果:1,2,3,4

  4.slice(start,end) 按照下標 數組的截取 不包括end 不會對原數組造成影響
 
  eg:   var arrl = [1,2,3,4];
      console.log(arrl.slice(0,3));
 
 
  運行結果:[1, 2, 3]

  5.splice(start,deleteCount,arr) 從start開始,刪除幾個 arr新插入的數組元素 操作的是原數組
  eg:    var arrl = [1,2,3,4];
      arrl.splice(1,2,78)
      console.log(arrl);
 
 
  運行結果:[1, 78, 4]
 
三、實例
  
  1. 編寫函數norepeat(arr) 將數組的重復元素去掉
  
  var arr = [1, 2, 3, 5, 6, 7, 8, 9, 41, 2, 5, 2, 3, 65, 5, 2, 2, 1, 5, 5, 5, 25, 9, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 6, 5, 2, 5, 5, 5, 4, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];

  function norepeat(arr) {
    while (true) {
      var flag = true;
      for (i = 0; i < arr.length; i++) {
        for (j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(j, 1);
            flag = false;
           }
        }
      }
    if (flag == true) {
      return arr;
     }
   }
 }
console.log(norepeat(arr));
 2. 快速排序
var arr = [5, 2, 8, 4, 3, 6, 1, 7];
function quickSort(arr) {
  //遞歸結束條件
  if (arr.length <= 1) {
    return arr;
  }

//取中間的值以及中間的下標
var    midIndex = parseInt(arr.length / 2), //為什么后面是分號,會阻隔數組的定義,而不阻隔 midValue 變量的定義
    midValue = arr[midIndex],
    leftArr = [],
    rightArr = [];
    // 遍歷arr數組,每一個值和中間的值相比較,大的放右側數組,小的放左側數組
    for (var i = 0; i < arr.length; i++) {
      //如果是中間小標的,跳出本次循環()不用中間值和自身比較
      if (i == midIndex) continue;
      if (arr[i] <= midValue) {
        leftArr.push(arr[i]);
      } else {
        rightArr.push(arr[i]);
      }
    }
    //利用遞歸處理左右數組
    return quickSort(leftArr).concat(midValue).concat(quickSort(rightArr));
}
console.log(quickSort(arr));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

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



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