• 前端随心记---------Javascript系列(第四节.数组)


       数组的两种:改变原数组 不改变原数组.
       数组:数据的集合
       数组定义:

      字面量方式定义数组:   

      var arr=[ ];定义了一个空数组;
      var arr=[1,2,3,4,5,6];定义了一个六位具体元素的数组]
      构造函数方式定义数组:
      var arr=new Array[ ];定义了一个空数组;
      var arr=[3]; 定义了一个数组,有一个元素.
      var arr=(5); 一个数字为参数,表示创建了一个5个空元素的数组
      var arr=("5"); 一个字符串数字的参数,表示创建了一个元素为"5"的数组.
      var arr=new Array(4); 定义了一个内容长度为4的数组.
      获取数组长度的属性: length
      对象名.属性名

      数组元素的基本操作
       数组下标:从0开始计算.
       基本数组元素的增删改查
       数组遍历
        案例:存入1--100;

    var arr=[ ];
    for (var i-0;i<=100;i++){
    arr[i] = i ;
    }

          for in 遍历数组(for..in 只能遍历对象,数组也是对象)
                特点: 没有循环条件, 自动取出下标 ,下标类型为string

    for(var key in obj ){ 
    console.log(key,obj[key]);
    }
    for(var index in arry){
    console.log(index,arry[index]);
    }

     二维数组         

         定义二维数组:元素以一维数组的方式存在.
               var arr=[ [ ],[ ] ]; 

      二维数组的遍历:

      for(var i=0;i<arr.length;i++){
         for(var j=0;j<arr[i].length;j++){
              console.log(arr [i] [j]);
                }
         }

    数组方法;

    改变原数组的方法:

     push()  : 向数组的尾部添加一个或者多个元素     用法:arr.push() 返回新数组的长度,原数组改变。

        pop()   :  删除数组尾部的数据,一次删一个        用法:arr.pop()    返回删除的元素,原数组改变。

     unshift() :   向数组的头部添加一个或者多个元素        用法:arr.unshift() 放回新数组,原数组改变。

     shift()   :   删除数组的第一个元素,返回新数组,原数组改变。

     splice()  :   

        arr.splice(start ,length )删除从开始位置指定length个元素,返回删除的元素,如果不加length 删除start位子及后面所有元素,原数组改变。

        arr.splice(start ,length ,num参数)  如果length是0,在start位置处添加num数据,删除0个元素,返回空值,原数组改变。

        arr.splice(start ,length ,num参数)   如果length是大于0,在start位置开始删除length个数据,再添加num数据,返回删除的元素,原数组改变。

        arr.reverse()   将数组倒叙,排列返回排列后的新数组。

      不改变原数组的方法

     arr.slice(start ,length)   1.截取从start位置到length位置的元素返回截取元素组成的新数组。

                 2.如果参数只有start,截取从start位置到数组最后返回截取元素组成的数组。

     arr.join(“ -  ”)      使用“ - ”将数组元素连接起来返回一个字符串。

     arr.concat(barr, arr) 将一个或者多个数组所有元素拼接在arr后面,返回拼接后的数组。

    堆和栈

    栈 当定义一个变量的时候,计算机在内存中开辟一块存储空间存放这个变量,这 个空间称为栈.
    特点:先进后出.后进先出,
    存放的是基本类型的数据
    如果变量是引用类型,栈中存入的是引用数据类型的地址
    所有浏览器都有垃圾回收机制。
    堆 堆中存入很多数据,一般存放的是对象引用数据类型
    按值传递和按引用类型的区别
    按值传递 值改变互不影响
    引用传递 一个变大家都变

    冒泡排序:

      function fnSort(arr){
            var t=0;
            for(var i=0;i<arr.length;i++){
                for(var j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                            t=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=t;
                            }
                       }
                  }
               return  arr;
           }
           var brr=[34,2,56,78,54,90];
           fnSort(brr);
           alert(brr);    // [2,34,54,56,78,90]

    选择排序;

    ###### 一:
       function fnSort(arr){
                var t=0;
                for(var i=0;i<arr.length-1;i++){
                    for(var j=i+1;j<=arr.length-1;j++){
                         if(arr[i]>arr[j]){
                            t=arr[i];
                            arr[i]=arr[j];
                            arr[j]=t;
                        }
                    }
              }
              return arr;
         }
         alert(fnSort([23,1,45,76] )  );   //[1,23,45,76]
        
    ######  二:  
       function xzFn(arr){
                    var temp=0;
                  for(var i=0;i<arr.length-1;i++){
                        var index=i;
                       for(var j=i+1;j<arr.length;j++){
                          if(arr[index]>arr[j]){
                                 index=j;
                                  }
                            }
                            if(index!=i){
                                temp=arr[i];
                                arr[i]=arr[index];
                                 arr[index]=temp;
                            }
                      }return arr;
                }

    alert(fnSort([23,1,45,76] ) ); //[1,23,45,76]

    数组去重:

    var arr=[56,67,34,7,4,64,6,54,3,4,5,3,6]
    alert(noRepeat(arr));
      function noRepeat(arr){
            var  new Arr=[ ];
            for (var i=0; i<arr.length;i++){
                if(!hasEleInArr(newArr,arr[i])){
                //.判断原数组中的每一个元素在新数组中是否存在
                //如果不存在,把这个元素添加到新数组中
                  newArr.push(arr[i]);
                    }
                }
           return  newArr;
           }
           
    
       function hasEleInArr(arr,ele){          //判断 一个元素在数组中是否存在
             for(var i=0;i<arr.length;i++){
                   if(arr[i]==ele){
                   return true ;     //表示存在
                    }
               }
               return false;      //表示不存在
               }
    var arr=[1,1,1,25,5,5,6,6,]
    alert(noRepeat(arr));
      function noRepeat(arr){
      for (var i=0;i<arr.length;i++){
            for(var j=i+1;j<arr.length;j++){
                if (arr[i]==arr[j]){
                    arr.splice(j,1);
                    j--;
                    }
               }
          }
      return arr;
      }

      Sort排序方法

      sort( ) 默认按照字符排序,如果数组元素为数字,会自动把数字转换为字符

      sort( )  方法进行数值排序,需要设置一个参数,这个参数是一个函数,函数返回正数,升序,返回负数,降序

    var arr=[23,8,6,7,199]
    arr.sort(function(){
        return Math.random()-0.5;
    })
        alert(arr);

    ES5数组方法:

    arr.forEach(function(ele,index,arry) { } );本质上是for循环,元素,下标,本身,遍历数组,没有返回值。

    arr.indexOf()   判断一个数在数组中是否存在,如果存在,返回这个数在数组的下标,如果不存在就返回  -1  。

    arr.map()  遍历数组。

    arr.indexof(ele)   从前往后找

    arr.indexof(ele,index);

    arr.lastIndexof(ele);  从后往前找

    arr.lastIndexof(ele,index);

    var newArr= arr.filer(finction(ele,index,arry){    return true/false ;根据里边条件真假的布尔值进行过滤 } );过滤 

    varnewArr=arr.map(function(ele,index,arry){return 处理的结果;});  映射为新的数组

    arr.reduce(function(prev){return prev结果作为新数组进入函数继续执行;})

    var result=arr.reduce(function(prev,next,index,arry({return prev ;})    result可能为数组,字符串,数字

    var newArr=arr.reduce(function){prev,next,index,arry){ return prev; },[])   结果新数组,

    var obj=arr.ruduce(function(prev,next,index,arry){return prev; },{});    结果为新对象;

    集思广益,仅供学习,侵权即删!!
  • 相关阅读:
    蛙蛙推荐:蛙蛙教你配置linux+mysql+.net环境
    今日阅读20081231学习remoting
    翻译:改进.NET应用程序的性能和可伸缩性(一)概述及ADO.NET 性能
    翻译:改进.NET应用程序的性能和可伸缩性(二)为性能和可伸缩性做架构和设计上的Review
    蛙蛙推荐:作一个支持过载自适应和动态扩容的负载均衡服务
    翻译:改进.NET应用程序的性能和可伸缩性(三)Remoting性能
    清空日志后备份数据库
    CLR宿主相关
    每日阅读20081216
    iis 无法安装提示错误,无法复制一个或多个文件,错误码0x4b8 dodo
  • 原文地址:https://www.cnblogs.com/hudunyu/p/11683722.html
Copyright © 2020-2023  润新知