es6新增数组常用方法

1.reduce方法

函数参数格式:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
callback函数里面有四个参数
total:初始值(也叫累计值)
currentValue: 当前元素值
currentIndex:当前元素索引值
arr:当前元素所属数组对象
initialValue:循环的初始值(第一次循环的初始值)

callback函数里面有两个参数的时候第一个代表累计值,第二个代表当前值

官方案例

const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;

// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10

// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15

举个小 求一个字符串里面字母出现的次数

var str = 'aabbfcfc'; 
str.split('').reduce((res, cur) => {
  res[cur] ? res[cur]++ : res[cur] = 1;
  return res; // 循环结束之后return
}, {});   
// {a: 2, b: 2, f: 2, c: 2}

2.sort方法

Array.sort(fun)
fun是一个函数,可选可不选

说明

如果该方法没有使用参数,那么将按照字母顺序对数组元素进行排序,精确点说就是按字符编码顺序进行排序
(数字也是一样 sort函数把数组每个项当作字符串处理 造成10比9小!数字排序要加参数)
如果想按照其他顺序排序,就需要提供比较函数,该函数返回一个用于判断顺序的数字,比较函数应该具有两个参数a和b

返回值<0, 则a 返回值>0, 则a>b 交换位置
返回值=0, 则a=b

无参数

var a = [1,20,3,40,5];
a.sort() // [1, 20, 3, 40, 5]

有参数

var a = [1,20,3,40,5];
var compare = (a,b) => {
   return a-b;
}
a.sort(compare) // [1, 3, 5, 20, 40]

按照数组里对象的某些属性进行排序

var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];
var compare = age => {
   return (a,b) => {
       return a[age] - b[age];
   }
}
arr.sort(compare(age))

3.findIndex方法

Array.findIndex(fun(currentVal, index, arr));

fun里面包含三个参数 分别是
1.当前元素(必选),
2.当前元素索引,
3.当前元素所属对象

fun返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。

var a = [2,3,4,6,7]; a.findIndex(item => item > 5); //3

4.some&&every方法

some && every

1.some方法
用于检测数组中元素是否满足指定条件,如果在循环遍历的时候有一个满足就停止遍历返回true
2.every方法
循环遍历中,有一个不满足筛选条件,就停止遍历,返回false

这两种方法的好处就是查询到想要的结果就停止遍历,免于不必要的循环

4.from方法

1.from接受一个参数的时候

Array.from('hello') // ["h", "e", "l", "l", "o"]

2.Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组,第二个参数是一个方法,方法的第一个参数是当前元素,第二个参数是当前元素的索引

Array.from([1, 2, 3], (x) => x * x)  
// [1, 4, 9]

4.set方法

此方法类似数组,唯一不同的是不允许重复

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4

Array.from可以将set结构转为数组

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items); //  [1,2,3,4,5]

因此set可用作数组去重的最简单方法(此方法用不了二级数组的去重)

function dedupe(array) {
 return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]

你可能感兴趣的:(es6新增数组常用方法)