zoukankan      html  css  js  c++  java
  • 【JS笔记】5.2 Array类型

    1. Array引用类型的特点

    • 每一项可以保存任意类型的数据;
    • 数组大小可以动态调整

    2.创建数组的方式

    方法一:Array()构造函数

    无参数

    var colors = new Array();//空数组

    自然数参数

    var colors = new Array(20);//20用来设置length属性的值,创建一个包含20个undefined的数组

    注:若参数数据类型不是数,则会创建一个包含一项元素的数组,如果是自然数,创建一个该数指定大小的每项都是undefined的数组

    参数

    var colors = new Array("red","green", "purple");

    方法二:数组字面量表示法

    var colors = [];//空数组

    var colors = ["red", 'blue','black'];

    var values = [1,2,]//2项或3项 第3项为undefined

    var values = [,,]//2项或3项 每项都是undefined

    IE8以及以前有bug,两values都是3项

    IE9+以及其他浏览器都是2项

    3.读取数组项

    索引小于数组中的项数,返回对应项

    索引大于等于数组中的项数,返回undefined

    4.检测数组

    方法一:在同一全局作用域中时检测数组的构造函数是否为Array

    if(value instanceof Array)

    方法二:低版本浏览器不支持Array.isArray()方法(ES5添加,支持浏览器:IE9+,FIREFOX 4+,SAFARI 5+ ,OPERA 10.5+,CHROME)

    if(Array.isArray(value))

    方法三普适:Object.prototype.toString.call(value)方法(该方法返回一个字符串,格式为  [object NativeConstructorName],                    该函数无法识别非原生构造函数名,因此若对象的构造函数不是原生的,一律返回[object Object])

    function isArray(value){

      return Object.prototype.toString.call(value) == "[object Array]";

    }

    5. 操作数组方法

    5.1索引操作

    5.1.1索引小于项数:替换原值

    5.1.2索引大于等于项数length = 索引值+1,并设置该值,且中间的项为undefined

    应用:在数组末尾添加新项colors[colors.length] = "black";

    5.1.3设置length的值:移除或添加项,添加的项的值是undefined

    5.2 方法操作

    5.2.1 push()//返回新的数组长度

    5.2.2 unshift()//返回新的数组长度  colors.unshift("blue","red");//blue,red,black,purple(顺序不变)

    5.2.3 pop()//返回删除项

    5.2.4 shift()//返回删除项

    5.2.5 concat()不改变原数组

    • 没有传递参数:复制当前数组并返回副本
    • 参数为一个或多个数组:将这些数组中的每一项添加到数组副本末尾返回
    • 参数不是数组:将这些值添加到数组副本末尾并返回

    注:数组和非数值参数可以混用

    5.2.6 slice() (不改变原数组)

    var numbers = [0,1,2,3,4,5];

    var numbers2 = numbers.slice(2,4);[2,3](没有4!)

    var numbers3 = numbers.slice(2);[2,3,4,5]

    注:

    • 若参数中存在负值,那么将该负值加数组长度变为正值确定位置
    • 参数2小于等于参数1,返回空数组

    5.2.7 splice(begin, num, insert1,insert2,insert3.....)

    begin:要删除插入第一个元素的位置(从0开始)

    num:删除项数

    insertn:插入项第一项的位置是begin

    5.2.8 reverse() 反转数组顺序,改变数组

    5.2.9 sort([callback])

    无参数时:

    调用数组每一项的toString()方法,然后比较得到的字符串,升序排序,[0,10,5];

    传参数时:回调函数 compare(value1, value2)

    如果个参数应该在第个参数之前,返回负数

    如果第一个参数应该在第二个参数之后,返回正数

    如果相等,返回0;

    升序比较函数:

    function compare(value1, value2){

      if(value1<value2){

        return -1;

      }else if(value1 > value2){  

        return 1;

      }else{

        return 0;

      }

    }

    简化版:

    function compare(value1,value2){

      return value1 - value2;

    }

    5.3 转换数组方法

    toString(),valueOf()调用数组每一项的toString()方法

    alert()接受字符串参数,也会对每一项调用toString()方法

    toLocaleString()方法:调用数组每一项的toLocaleString()方法

    alert(colors.toString());//red,blue,green

    join()方法:改变分隔符

    alert(colors.join("||"));//red||blue||green

    5.4 位置方法 (支持浏览器:IE9+,......................)

    indexOf(term,[start])

    lastIndexOf(term,[startRight])

    使用“===”符号查找,返回查找的项的索引

    5.5 迭代方法 (IE9+,.......................)

    every:numbers.every(function(term,index,array)){...}

    filter:返回  返回值为true的所组成的数组

    forEach:无返回值

    map:返回 返回值组成的数组

    some

    5.6 缩小方法

    reduce() reduceRight()

    从第二项或者倒数第二项开始迭代,最终构建一个返回值

    初始值(第一次迭代的pre值默认是第一项倒数第一项,也可以作为第二个参数传入设置初始值

    var values = [1,2,3,4,5];

    var sum = values.reduce(function(pre, cur, index, array)){

      return pre + cur;//成为下一次迭代的pre

    });//sum = 15

    寻找爱
  • 相关阅读:
    网页抓取
    基本数据结构
    小节
    顺序统计量
    线性时间排序
    快速排序
    堆排序 Heapsort
    大数运算
    趣味题,文本中洞的数量
    nginx config配置
  • 原文地址:https://www.cnblogs.com/carolina/p/5804707.html
Copyright © 2011-2022 走看看