2018-04-10 数组方法整理

1.reduce方法

reduce方法从左到右用来迭代数组的所有项,然后构建一个最终的返回值。
语法:
arr.reduce(callback,初始化值)

reduce为数组中的每一个元素依次执行callback函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:
accumulator -------未提供初始值时,默认是数组的第一个元素
currentValue -------数组当前值
currentIndex -------数组当前索引
array------------------当前数组

应用:

1.数组里所有值求和

var sum = [1,2,3,4].reduce(function(pre,cur){
          return pre +cur;
},0);
//sum is 10

2.计算数组中每个元素出现的次数

var names = ['Alice','Bob','Tiff','Bruce','Alice'];
var countedNames = names.reduce(function(allNames,name){
      if(name in allNames){
              allNames[name]++;
      }else{
              allNames[name]=1;
      }
return allNames;
},{});
// countedNames is:
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

3.数组去重

var arr=[1,2,1,2,3,3,4,4,5,6,7];
var nArr = arr.sort().reduce(function(initValue,current){
   if(initValue[initValue.length-1]!==current){
      initValue.push(current);
}
return initValue;
},[])
//nArr [1,2,3,4,5,6,7]

2.reduceRight方法

 reduceRight方法从右到左用来迭代数组的所有项,然后构建一个最终的返回值。
reduce和reduceRight区别
var a =['1','2','3','4','5','6'];
var left = a.reduce(function(pre,cur){return pre +cur;});
var right = a.reduceRight(function(pre,cur){return pre +cur});
//left '12345'
//right '54321'

3.slice方法

slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
语法:

arr.slice(begin(可选),end(可选)),默认从0开始,支持输入负数。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。
1.返回现有数组的一部分

var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1, 3);

// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']

2.把类数组转成真正的数组

function list() {
  return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1, 2, 3]

或者用ES6的方法 array.from();

3.生成一个新的数组

arr.slice();

4.every()方法

every() 方法测试数组的所有元素是否都通过了指定函数的测试。
1.检测所有数组的大小

检测数组中的元素是否都大于10
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

5.some()方法

some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。

const isBiggerThan10 = (element, index, array) => {
  return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10);  
// false
[12, 5, 8, 1, 4].some(isBiggerThan10); 
// true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 6,197评论 0 16
  • 数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组...
    Sachie阅读 4,447评论 0 7
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,461评论 0 4
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,640评论 0 21
  • 数组方法 下面开始介绍数组的方法,数组的方法有数组原型方法,也有从object对象继承来的方法,这里我们只介绍数组...
    祈求者阅读 2,817评论 0 2