2018-04-10 数组方法整理

2018-04-10  本文已影响0人  范晓坤

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
上一篇下一篇

猜你喜欢

热点阅读