首页 > 代码库 > js数组增删查改

js数组增删查改

一、插入

  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 = http://www.mamicode.com/arr.splice(index,1);>*/
              //-----------------second---------------
              var quickSort = function(arr){
                if(arr.length<=1) return arr;
                var index = Math.floor(arr.length/2);
                console.log(index); //1
                var centerValue = http://www.mamicode.com/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数组增删查改