1.位置方法indexOf()和lastIndexOf()
这两个方法是为了查找数组或者字符串中元素的方法,存在的话返回当前的索引位置(从0开始),不存在的话返回-1。两者的区别是前者从正向查找,后者反向查找(一般适用于有两个相同的元素存在)。它们均可包含两个参数,参数1代表要查找的元素,参数2代表查找的开始位置(可选)。
var arr = [1, 2, 3, 4, 2];
console.log(arr.indexOf(4)); //3
console.log(arr.lastIndexOf(2)); //4
console.log(arr.indexOf(1, 3)); //-1
console.log(arr.lastIndexOf(2, 2)) //1
2.数组的五大迭代方法
这些迭代方法分别为every()、filter()、map()、some()、forEach()方法。在平常使用中,最常见的就是map()和forEach()方法,其它的三个我见得次数不超过一把手😓。下面介绍一下这五个迭代方法的区别。
- every():这个方法是对数组的每一项进行运算,如果均返回true,则该方法返回true。
var arr = [2, 3, 4];
const res = arr.every((item, index, arr) => {
return (item > 1);
});
console.log(res); //true
- filter():根据语义化理解,这个方法是对数组进行过滤的,也就是说这个方法会对数组的每一项进行操作,通过过滤返回值为true的元素,将他们重新组成数组进行返回。
var arr = [2, 3, 4];
const res = arr.filter((item, index, arr) => {
return (item > 2);
});
console.log(res); //[3, 4]
- map():这是个映射的方法,它会对数组的每一项进行操作,然后将操作的结果组成数组进行返回。通常其返回的新数组和原数组会形成一一对应的关系。
var arr = [2, 3, 4];
const res = arr.map((item, index, arr) => {
return (item * 2);
});
console.log(res); //[4, 6, 8]
- some():该方法也是对数组的每一项进行操作,如果有一项返回true,则该函数返回true。
var arr = [2, 3, 4];
const res = arr.some((item, index, arr) => {
return (item > 3);
});
console.log(res); //true
- forEach():该方法就是对数组的元素进行操作,没有返回值,本质和for循环一样,也是平常最常用的一个方法。
var arr = [2, 3, 4];
arr.forEach((item, index, arr) => {
//这里是执行的代码,这个函数没有返回值
});
3.数组的缩小方法reduce()和reduceRight()
这两个方法之前用过一次,已经很久了,当时是配合map()方法使用的,进行筛选关键字的功能。现在再次看到,已经忘得差不多了😆。这个方法是进行叠加的操作。这两个函数都可以包含两个参数,第一个是对数组进行操作的方法(里面包含四个值,分别为pre、cur、index、arr),第二个可以设置初始值(可选,有的话它就是pre,cur就是数组的第一项。没有的话pre就是数组的第一项,cur就是数组的第二项)。这两个方法最直观的使用就是它会把返回值继续作为操作的第一项依次进行迭代计算。 这两个方法的区别就是操作数组的方向正好相反,一个是正向,一个是反向。 举个例子看一下:
var arr = [2, 3, 4, 5];
var sum = arr.reduce((pre, cur, index, arr) => {
return (pre + cur); //这个返回结果是从数组的开头向末尾(2+3)计算,返回结果作为数组的第一项再次进行计算
});
console.log(sum); //14
var sum = arr.reduceRight((pre, cur, index, arr) => {
return (pre + cur); //这个返回结果是从数组的末尾向开头(5+4)计算,返回结果作为数组的第一项再次进行计算
});
console.log(sum); //14