常用数组函数

数组的一些方法

javascript的数组是个非常熟悉不过的类型,而且有着非常强大的功能,但并不是每个前端学习的人都可以熟练掌握它,下面就来说一下数组的一些方法

  • 数组去重

    (1)给一个数组arr = [1,2,3,3,4],该如何去重?

    • es6里面有一个新的数据结构Set var newArr = new Set(arr);

    • es5方法是声明一个新数组obj,遍历arr,查看其中元素是否在新数组中存在,代码如下:

        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
        	if (newArr.indexOf(arr[i]) === -1) {
        		newArr.push(arr[i]);
        	}
        }
        console.log(newArr); // [1,2,3,4];
      
  • Array.forEach

    foreach是对数组中每个元素执行一次给定函数,但是原数组不变,无返回值

      	var arr = [1,2,3,4];
      	arr.forEach(function(item, index, origin) {
      		item += 1;
      		console.log(item);//2,3,4,5
      	})
      	console.log(arr); // [1,2,3,4]
    
  • Array.map

    map是对数组中每个元素执行一次给定函数,原数组不变,返回新数组

      	var arr = [1,2,3,4];
      	var newArr = arr.map(function(item, index, origin) {
      		return ++item;
      	})
      	console.log(newArr); // [2,3,4,5]
    
  • Array.filter

    filter是对数组中每个元素执行一次给定函数,原数组不变,返回符合条件的新数组

      	var arr = [1,2,3,4];
      	var newArr=arr.filter(function(item, index, origin){
      		return item>2;
      	})
      	console.log(newArr);//[3,4]
    
  • Array.reduce

    reduce是第一个参数是一个函数,该函数的参数为上一次执行函数结果pre和目前元素的值和索引,通常用于求数组之和,第二个参数是在第一次执行函数是的pre的值,如果没有该参数则将第一个值当做pre的值

      	var arr = [1,2,3,4];
      	var res = arr.reduce(function(pre, cur, curIndex, origin) {
      		console.log(curIndex); // 1,2,3
      		return pre + cur;
      	})
      	console.log(res); // 10
    
      	var res = arr.reduce(function(pre, cur, curIndex, origin) {
      		console.log(curIndex); // 0,1,2,3
      		return pre + cur;
      	}, 5)
      	console.log(res); // 15
    
  • Array.every

    every是对数组中每个元素执行一次给定函数,如果有一个结果为false,则返回false;

      	var arr = [1,2,3,4];
      	var res = arr.every(function(item, index, origin) {
      		return item > 2;
      	})
      	console.log(res); // false
    
  • Array.some

    some与every相对,是对数组中每个元素执行一次给定函数,如果有一个结果为true,则返回true;

      	var arr = [1,2,3,4];
      	var res = arr.some(function(item, index, origin) {
      		return item > 2;
      	})
      	console.log(res); // true
    
  • 将类数组转换为数组

    • es6中提供了Array.from的方法

    • es5中可以使用 Array.prototype.slice.call(arr)的方法

posted @ 2017-10-15 23:13  日含  阅读(278)  评论(0编辑  收藏  举报