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方法
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]