4-数组

遍历数组

  • foreach()
  • for-in 语句结构
  • Object.keys() 方法

数组的某个位置是空位,与某个位置是undefined不一样。若是空位,使用数组的foreach() 方法、for-in结构以及Object.keys() 方法进行遍历,空位都会被跳过。


使用Array

  • 判断数组
    Array.isArray() 判断一个值是否为数组

  • 增删数组
    1.push() —在尾部添加元素
    【用 push() 方法合并两个数组:Array.push.apply(arr1,arr2)

    2.pop() —删除数组最后一个元素,并返回该元素

    push() 和 pop() 方法结合使用,构成“后进先出”的结构

    3.shift()—删除数组第一个元素,并返回该元素

    push() 和 shift() 方法结合使用,构成“先进先出”的队列结构

    4.unshift()—在数组的第一个位置添加元素

  • 合并数组
    concat()—用于多个数组的合并

  • 转换为字符串
    join() —以参数作为分隔符,将所有数组成员组成一个字符串返回
    split()—把字符串转换为数组,第一个参数为分隔符

  • 截取数组
    slice()—提取数组的一部分,返回一个新数组,原数组不变【左闭右开】

    • 第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内
    • 若参数为负数,则表示倒数计算位置
    • 一个重要应用,将类似数组的对象转为真正的数组
      array.prototype.slice.call({0:‘a’,1:‘b’,length:2}) //[‘a’,‘b’]

    splice()—删除原数组的一部分元素,并可以在被删除的位置添加新元素,返回值是被删除的元素(会改变原数组)
    第一个参数是删除的起始位置,第二个参数是被删除的元素个数,若后面还有参数,则表示这些就是被插入数组的元素

  • 排序数组
    1.reserve()—颠倒数组(会改变原数组)
    2.sort()—排序(会改变原数组)
    【注意】sort()方法不是按照大小排序,而是按照对应字符串的字典顺序排序,故101排在11前面。

    以下代码则是从小到大排序(从大到小 return b-a 即可)

    c.sort(function(a,b){
    	return a-b
    })
    
  • 定位元素
    1.indexOf()—给定元素在数组中第一次出现的位置,若没有则返回-1

    • 可接受第二个参数,表示搜索的开始位置

    2.lastindexOf()—给定元素在数组中最后一次出现的位置,若没有则返回-1

  • 迭代数组 map()

    • map()—对数组所有元素依次调用一个函数,根据函数结果返回一个新数组
    • map() 方法接受一个函数作为参数。该函数调用时,map() 方法会将其传入三个参数,分别是当前元素,当前位置和数组本身
    • map() 方法不仅用于数组,还可用于字符串,用来遍历字符串的每个字符。但不能直接使用,要通过函数的call() 方法间接使用,或者先将字符串转为数组,然后使用。
      var upper=function(x){
      	return x.toUpperCase();
      };
      console.log([].map.call('abc',upper))  //[ 'A', 'B', 'C' ]
      console.log('abc'.split('').map(upper))  //[ 'A', 'B', 'C' ]
      
    • map() 方法还可接受第二个参数,表示回调函数执行时this所指向的对象
      var a=[1,2,3,4,5];
      [2,3].map(function(e){
      	console.log(this[e])
      },a)  //3,4
      
    • 若数组有空位,map() 方法的回调函数在这个位置不会执行,会跳过数组的空位,undefined和null不会跳过

  • 迭代数组 forEach()

    • forEach() 方法与map() 方法很相似,也是遍历数组的所有成员,执行某种操作,但forEach() 方法一般不返回值,只用来操作数据。如果需要有返回值,一般用map() 方法。
    • forEach() 方法也可以接受第二个参数,用来绑定回调函数的this关键字
    • forEach() 方法无法中断执行,总是会将所有成员遍历完
    • forEach() 方法会跳过数组的空位,但不跳过undefined和null
    • 也可用于类似数组的对象和字符串
  • 过滤数组

    • filter()—参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
    • filter() 方法的参数函数可以接受三个参数(当前元素的值,当前元素位置,整个数组)
    • filter() 方法还可接受第二个参数,指定测试函数所在上下文对象(即this对象)
  • 验证数组

    • some()—只要有一个数组元素的返回值是true,则整个方法的返回值就是true
    • every()—所有元素的返回值都是true,才返回true,否则返回false

    【对于空数组,some() 方法返回false,every() 方法返回true】

    • 上述两个方法的函数参数都接受三个参数(当前元素,当前位置,整个数组)
    • 上述两方法还可接受第二个参数,用来绑定函数中的this关键字
  • 汇总数组

    • reduce() —从左到右依次处理数组成员

    • reduceRight() —从右到左依次处理数组成员

      此两方法的第一个参数都是函数,该函数接受以下四个参数::
      (1)累积变量,默认为数组的第一个成员
      (2)当前变量,默认为数组的第二个成员
      (3)当前位置(从0开始)
      (4)原数组
      【前两个必须,后两个可选】

      利用reduce() 方法,可以对数组求和

      Array.prototype.sum=function(){
      	return this.reduce(function(first,second){
        		return first+second;
      	})
      };
      console.log([2,3,4,1,5].sum())  //15
      

      如果要对累积变量指定初值,可以把它放在reduce() 和reduceRight() 方法的第二个参数

      console.log(
        [1,2,3,4,5].reduce(function(x,y){
         return x+y;
      },10))  //25
      

      上面代码中,指定参数x的初值为10,数组从10开始累加,此时y是从数组的第一个成员开始遍历。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值