数组方法总结二(已完结)

182 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

整理数组中常用的方法......

reverse

  1. 作用:颠倒数组中元素位置
  2. 格式:数组名称.reverse();
var arr = [10, 20, 30, 40, 50];
arr.reverse();
console.log(arr); // [50, 40, 30, 20, 10]

sort

  1. 作用:对数组中的元素进行排序
  2. 格式:arr.sort(参数);
  3. 注意:如果数组元素都是数值型的数据,那么sort在不传参时,排序的结果是有问题的,因为在使用sort方法对数值型数据进行排序时会先将里面的元素转换为字符型,然后按照字符型数据的比较规则进行比较
var arr = [10, 40, 30, 50, 20];
var res = arr.sort();
console.log(res); // [10, 20, 30, 40, 50]

var arr = [1, 0, 13, 2, 7, 15];
var res = arr.sort();
console.log(res); // [0, 1, 13, 15, 2, 7]
// 此时的解决方法:给sort方法传递参数
arr.sort((a, b) => {
     return a - b; //升序 [0, 1, 2, 7, 13, 15]
});
console.log(arr)
arr.sort((a, b) => {
     return b - a; //降序 [15, 13, 7, 2, 1, 0]
});

map

  1. 作用:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。不会对空数组进行检测
  2. 格式: arr.map(function(currentValue,index,arr) {}); arr.map((currentValue,index,arr)=>{})
  3. 参数说明
    • currentValue:正在处理的数组元素,当前元素
    • index:当前元素的下标
    • arr:当前元素所在的数组
var arr = [10, 20, 30, 40, 50];
var res = arr.map((ele,index,arr) => {
     return ele * 10;
})
console.log(res); //  [100, 200, 300, 400, 500]

// 对于空数组,不做任何处理
var res2 = [].map((val, index, arr) => {
    return val * 10;
});
console.log(res2); // []

filter

  1. 作用:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。不会对空数组进行检测。
  2. 格式:
    arr.filter(function(currentValue,index,arr)) arr.filter((currentValue,index,arr)=>{})
// 从数组arr中过滤出值大于5的元素
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var res = arr.filter((val, index, arr) => {
      return val > 5;
});
console.log(res) // [6, 7, 8, 9, 10]

// 从数组中过滤出奇数
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var res = arr.filter((val, index, arr) => {
      return val % 2 != 0;
});
console.log(res) //  [1, 3, 5, 7, 9]

find

  1. 作用:find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
  2. 格式: arr.find(function(currentValue,index,arr)) arr.find((currentValue,index,arr) => {})
// 查找数组中值大于50的元素
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.find((ele,index ,arr)=>{
    return ele > 50
});
console.log(res); // 60

findIndex

  1. 作用:findIndex() 方法返回通过测试(函数内判断)的数组的第一个元素的下标。
  2. 格式: arr.findIndex(function(currentValue,index,arr)) arr.findIndex((currentValue,index,arr)=>{})
// 查找数组中值大于50的元素的下标
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.findIndex((ele,index ,arr)=>{
    return ele > 50
});
console.log(res); // 5

some

  1. 作用:some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。有满足条件的返回true,否则返回false
  2. 格式: arr.some(function(currentValue,index,arr) arr.some((currentValue,index,arr)=>{})
// 数组中是否有大于50的元素
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.some((ele)=>{
    return ele > 50
});
console.log(res); // true

// 数组中是否有大于100的元素
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.some((ele)=>{
    return ele > 100
});
console.log(res); // false

every

  1. 作用:every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
  2. 格式: arr.every(function(currentValue,index,arr) arr.every((currentValue,index,arr)=>{})
// 判断数组中元素是否都大于8
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.every((ele)=>{
    return ele > 8
});
console.log(res); // true

// 判断数组中元素是否都大于20
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
var res = arr.every((ele)=>{
    return ele > 20
});
console.log(res); // false

includes

  1. 作用:includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
  2. 格式:arr.includes(searchElement, fromIndex);
  3. 参数说明:
    • searchElement:必需,要查找的字符串。
    • fromIndex:可选,设置从那个位置开始查找,默认为 0。
// 判断数组中是否包含数值3
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var res = arr.includes(3, 1);
console.log(res) // true

reduce 和 reduceRight

  1. 作用:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduceRight的作用和reduce相同,但是执行时是从右到左。
  2. 格式:
arr.reduce(function(prev, currentValue, currentIndex, arr){},初始值);

arr.reduce((prev, currentValue, currentIndex, arr)=>{},初始值);
  1. 注意:
    • 如果设置初始值,那么在第一次调用回调函数时,prev的值为这个初始值,如果不设置初始值,那么默认情况下,prev的值为数组的第一个元素
    • 当reduce方法没有第二个参数(初始值),那么在第一次调用回调函数时,回调函数接收到的数据是:
        // prev:1(表示数组的第一个元素10)
        // currentValue:2(表示数组的第二个元素20)
        // currentIndex:1(表示数组的第二个元素的下标)
        // arr:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10](表示整个数组)
// 求这10个值的和,即求数组的和
var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
// 不带初始值
var res = arr.reduce((prev, currentValue, currentIndex, arr) => {
    return prev + currentValue;//10+20+30+40+50+60+70+80+90+100
});
console.log(res); // 550

// 带初始值
var res1 = arr.reduce((prev, currentValue, currentIndex, arr) => {
    return prev + currentValue;//1+10+20+30+40+50+60+70+80+90+100
}, 1);
console.log(res1); // 551

concat

  1. 作用:数组拼接
  2. 格式:arr.concat(arr2, ...);
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var newArr = arr1.concat(arr2, 100, 200, 300);
console.log(newArr); // [1, 2, 3, 4, 5, 6, 100, 200, 300]