1. 程式人生 > >js數組增刪查改

js數組增刪查改

數組 可能 call lis 存儲 inf method 直接插入排序 目的

一、插入

  1. 順序插入

 1 function Insert(arr, n, data){
 2 
 3             //若插入數據位置不在表尾
 4             if (n < arr.length)
 5             {
 6                 //將要插入位置之後元素依次向後移動一位
 7                 for (var i = seqList.ListLen - 1; i >= n; i--)
 8                 {
 9                     seqList.ListData[i + 1] = seqList.ListData[i];
10 } 11 } 12 //將數據插入到位置為n的位置並將數組的長度加1 13 seqList.ListData[n-1] = data; 14 seqList.ListLen++; 15 return true; 16 }

二、刪除

  1. 原型方法

//給Array本地對象增加一個原型方法,它用於刪除數組條目中重復的條目(可能有多個),返回值是一個包含被刪除的重復條目的新數組。
//the first method------prototype----
Array.prototype.distinct = function(){ var arr=[]; var obj={}; //對象承接 for(var i=0,len=this.length;i<len;i++){ if(!obj[this[i]]){ obj[this[i]]=1; arr.push(this[i]); } }
return arr; }; var arr = new Array(); arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0); console.log(arr); console.log(arr.distinct());

//the second method-----prototype
  Array.prototype.distinct = function(){
    var arr=[];
    for(var i=0,len=this.length;i<len;i++){
      if(this[i]==this[i+1]){
        continue;
      }else{
        arr.push(this[i]);
      }
    }
    return arr;
  };
  var arr = new Array();
  arr.push(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
  console.log(arr);
  console.log(arr.distinct());
  //slice(start,end) 返回的是裁下來的元素數組
  console.log(arr.slice(2,4));
  console.log(arr);
  //splice() 方法與 slice() 方法的作用是不同的,splice() 方法會直接對數組進行修改
  arr.splice(0,2,80);
  console.log(arr);

//the third method-----前一個和之後全部的元素比較

  Array.prototype.distinct = function(){
    for(var i=0,len=this.length;i<len;i++){
      for(var j=i+1;j<=len;j++){
        if(this[i]==this[j]){
          console.log(this[j]);
          this.splice(j,1);
          j--; //得考慮如果刪除一個元素,j的值需要減1
          len--;
        }
      }
    }
  //return this;
  };
  var arr = new Array();
  arr.push("a","b","c","c","b","bb","dd","d","aa","c","bb");
  //var cc = arr.splice(5,1)[0];
  console.log(arr);
  //console.log(cc);
  arr.distinct()
  console.log(arr);

  2. 普通函數

  

 function removeRepeat(arr){
    var array=[];
    var obj={};
    for(var i=0,len=arr.length;i<len;i++){
      if(!obj[arr[i]]){
        obj[arr[i]]=1;
        array.push(arr[i]);
      }
    }
    return array;
  };

  var arr = new Array(1,3,2,4,4,4,5,6,7,8,8,8,9,0);
  var array = removeRepeat(arr);
  console.log("removeRepeat : " + array);
  console.log(arr);

三、增加

四、查找

五、排序

/*//-------------冒泡排序(從小到大)-------------
              for(var i=0,len=arr.length;i<len;i++){
                  for(var j=i+1;j<len;j++){
                    if(arr[i]>arr[j]){  //將最大的放在最後
                        var temp=0;
                        t=arr[i]; 
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                  }
              }
              //--------第二種(改善)------------
              for(var i=1,len=arr.length;i<len;i++){
                  for(var j=0;j<len-i;j++){  //已經排序好的最大數組不必在比較
                    if(arr[j]>arr[j+1]){  
                        var temp=0;
                        t=arr[i]; 
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                  }
              }
              */
            /*//-------------選擇排序(從小到大)-------------
              for(var i=0,len=arr.length-1;i<len;i++){
                  int min = i;
                  for(var j=i+1;j<len;j++){
                    if(arr[min]>arr[j]){
                        min=j;
                    }
                }    
                if(min!=i){
                    var temp=0;
                    t=arr[min];
                    arr[min]=arr[i];
                    arr[i]=temp;
                }    
              }*/
              /*//-------------直接插入排序(從小到大)-------------
              for (int i = 1; i < arr.Length; i++){
                if (arr[i - 1] > arr[i])
                {
                    int temp = arr[i];  //每次取出當前的要比較的值
                    int j = i;
                    while (j > 0 && arr[j - 1] > temp) //大於它的話,要賦值給它
                    {
                        arr[j] = arr[j - 1];
                        j--;
                    }
                    arr[j] = temp;
                }
            }*/
              /*//-------------js實現快速排序(從小到大)-------------*/
              /*//-----------------first---------------
            var quickSort = function(arr){
                var arr = arr.concat(); //concat的新用法(深復制)
                if(arr.length<=1) return arr;
                var index = Math.floor(arr.length/2);
                var centerValue = arr.splice(index,1);
                //console.log(centerValue);
                var left = [];
                var right = [];
                for(var i=0,len=arr.length;i<len;i++){
                    if(centerValue>=arr[i]){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                // debugger
                //console.log(quickSort(left));
                //console.log(right);
                var res1 = arguments.callee(left);
                var res2 = arguments.callee(right);
                //return left.concat(right);
                return res1.concat(centerValue,res2);
            }
            var arr=[9,8,7,4,5,3,77];          
              var result = quickSort(arr);
              console.log(result);
              console.log(arr);*/
              //-----------------second---------------
              var quickSort = function(arr){
                if(arr.length<=1) return arr;
                var index = Math.floor(arr.length/2);
                console.log(index); //1
                var centerValue = arr.slice(index,index+1)[0];
                console.log(centerValue); //5
                var left = [];
                var right = [];
                for(var i=0,len=arr.length;i<len;i++){
                    if(centerValue>=arr[i]){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                var res1 = arguments.callee(left);
                var res2 = arguments.callee(right);
                return res1.concat(res2);
            }
            var arr=[9,8,7,4,5,3,4,77];          
              //var result = quickSort(arr);
              //console.log(result);
              console.log(arr);
              var aa=[3,4];
              //console.log(aa.slice(1,2));
              console.log(aa.splice(0,0));
              /*//-------------反轉排序-----------------
              for(var i=0,len=arr.length-1;i<len/2;i++){
                    var temp=0;
                    t=arr[i];
                    arr[i]=arr[len-1-i];
                    arr[len-1-i]=temp;    
              }*/
              /*//-------------參數排序(從小到大)-----------------
              function mySort() {
                var tags = new Array();//使用數組作為參數存儲容器
                tags = Array.prototype.slice.call(arguments);
                tags.sort(function(a,b){
                    return a-b;
                })
                return tags;//返回已經排序的數組
            }
             
            var result = mySort(50,11,16,32,24,99,57,100); //傳入參數個數不確定
            console.info(result); //顯示結果
              */

js數組增刪查改