zoukankan      html  css  js  c++  java
  • javaScript(数组)

    JavaScript引用类型--数组常用方法


    在ECMAScript中数组是非常常用的引用类型了。ECMAScript所定义的数组和其他语言中的数组有着很大的区别。首先要说的就是数组也是一种对象。

    • 数组的概念、特性、常用方法
    • 掌握Object,学会使用对象
    • 了解其他引用类型对象

    特点:
    1.数组”即一组数据的集合。
    2.js数组更加类似java的容器。长度可变,元素类型也可以不同!
    3.数组长度随时可变!随时可以修改!(length属性)

    -----创建数组方式------
    //方式一:
    var arr = new Array(); 
    //方式二:
    var arr = [1,2,3,4,true,new Date(),'abc']
    arr.length;//查询数组长度,等于7
    arr.length=3;//那么 arr = [1,2,3],相当于截取了前三。
    
    常用方法 作用 返回值
    push 向数组尾部追加元素,并改变原数组的值 新数组的元素个数,
    pop 从数组的尾部移除一个元素,并改变原数组的值 移除的元素内容
    shift 从头部移除一个元素,并改变原数组的值 移除的元素内容
    unshift 向数组头部插入多个元素,并改变原数组的值 新数组的长度
    splice 截取的方法。第一个参数:起始位置,第二参数:表示截取的个数,第三个参数:新追加的新元素个数。不改变原数组的值 移除的元素内容
    slice 截取范围(左闭又开区间+/-)。不改变原数组的值 截取的元素内容
    concat 合并粘连的操作,不改变原数组的值 粘连后的新数组
    join 在每个元素组中间加入内容,不操作数组本身 原数组中间加入内容后的值
    sort 正序排序(按照每个字符串的字节比的,不能准确按照大小排序),改变原数组的顺序 原数组排序完的值
    reverse 倒序排序(按照集合中元素位置进行倒序排列,不按照大小排序),改变原数组的顺序 原数组排序完的值

    示例

    //先定义一个数组
    var arr = [1,2];
    
    ******push*******
    var result = arr.push(1,2,true);
    那么arr=[1,2,1,2,true];result=5;
    
    ******unshift*******
    arr.unshift(10,false)
    那么arr=[10,false,1,2]
    
    ******join*******
    var result = arr.join("-")
    那么arr=[1,2]
    那么result=[1-2]
    
    ******sort*******
    var arr = [10,2,4,1,7];
    arr result = arr.srot();
    那么result=arr = [1,10,2,4,7];
    //因为底层排序的方式,是字符对比着排序,所以不精确。一般项目中自己写compare方法比较:
    function compare(value1,value2){
        if(value1<value2){
            return -1;
        }else if(value1>value2){
            return 1;
        }else{
            return 0;
        }
    }
    //正常的 正序排列
    arr.sort(compare);
    

    ECMAScript5 Array新特性

    方法 功能 描述
    indexOf 位置方法 1个参数:获得此参数在数组中的索引。2个参数:第一个表示起始位置,第二个参数表示此参数在数组中出现位置的索引值。
    lastIndexOf 位置方法 同indexOf,不同的是lastIndexOf从后向前找。
    -- 以上 查找索引的时候 底层使用的是"==="方法。
    every 迭代方法
    filter 迭代方法
    forEach 迭代方法
    map 迭代方法
    some 迭代方法
    reduce 缩小方法
    reduceRight 缩小方法

    迭代方法示例:

    var arr = [1,2,3,4,5,6,7,8,2,5];
    
    //对于数组的每一个元素,都用一个函数来运行
    //function的三个参数:
    1.**item:必须。当前元素的值
    2.**index:可选。当前元素的索引值
    3.**array:可选。当前元素属于的数组对象
    4.**thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    
    *******every*******
    //将数组的每一项元素传入function,返回的的是true,那么最终返回true。如果有一个返回false,剩余的元///素不会再进行检测,最后结果返回false
    var result = every(funcrion(item,index,array,thisValue){
        return item > 2;
    })
    alert(result);//result结果为false
    
    *******filter*******
    //将数组的每一项元素传入function,返回满足条件的元素数组
    var result = arr.filter(function(item,index,array){
       return  item>6
    })
    alert(result);//result中元素为7,8
    
    *******foreach*******
    //将数组的每一项元素传入function,并且可以执行自定义的方法
    arr.foreach(function(item,index,array){
        //此处可执行自定义方法
        alert(item)...
    })
    
    
    *******map*******
    //将数组的每一个元素传入function,function执行完毕后,把新的结果返回
    //也就是原数组被“映射”成对应新数组。下面这个例子是数值项求平方
    var result = arr.map(function(item,index,array){
        return  item*item;
    });
      alert(result);//result为新的数组,元素为2,4,6,8,10,12,14,16,4,10
    
    *******some*******     与every算是相反的方法
    //将数组的每一项元素传入function,如果有一项返回true,最终返回true。如果每一项都返回false,最终返回false
    var result = arr.some(function(item){
    	return item==1222;
    })
     alert(result);//fasle
    
    *******reduce*******
    //fnction参数:
    1.前一个值
    2.当前值
    3.当前索引
    4.当前数组
    arr.reduce(function(prev,curr,index,array){
       return prev+curr;//前一个值+当前值
    })
    alert result;//所有值的和
    
     *******reduceRighte*******
    arr.reduceRighte(function(prev,curr,index,array){
       return prev+curr;//前一个值+当前值
    })
    
    > *   reduce  与 reduceRighte相反,reduce从左向右执行,reduceRighte相反;
    
  • 相关阅读:
    特征工程系列:GBDT特征构造以及聚类特征构造
    SQL语句优化,数据分析师必须掌握!
    Win8下修改任務欄的資源管理器默認打開位置
    eclipse升级,导入旧版eclipse的插件[转]
    内网Linux对公网开启SSH
    windows上传文件到linux
    Chrome每次打開都要打開123.sogou.com
    maven下载的jar文件出现invalid LOC header (bad signature)
    requesting java ast from selection
    JConsole connection failed
  • 原文地址:https://www.cnblogs.com/omery/p/9969104.html
Copyright © 2011-2022 走看看