JavaScript-数组常用方法

5 阅读3分钟

  • push():向数组末尾添加元素,返回新数组的长度。

    let arr = [1, 2, 3];
    let newLength = arr.push(4);
    console.log(arr); // [1, 2, 3, 4]
    console.log(newLength); // 4
    
  • unshift():向数组开头添加元素,返回新数组长度。

    let arr = [1, 2, 3];
    let newLength = arr.unshift(0);
    console.log(arr); // [0, 1, 2, 3]
    console.log(newLength); // 4
    
  • concat():连接多个数组,返回一个新的数组,不修改原数组。

    let arr1 = [1, 2, 3];
    let arr2 = [4, 5, 6];
    let newArr = arr1.concat(arr2);
    console.log(newArr); // [1, 2, 3, 4, 5, 6]
    

  • pop():移除数组末尾的元素,返回该元素。

    let arr = [1, 2, 3];
    let removedElement = arr.pop();
    console.log(arr); // [1, 2]
    console.log(removedElement); // 3
    
  • shift():移除数组开头的元素,返回该元素。

    let arr = [1, 2, 3];
    let removedElement = arr.shift();
    console.log(arr); // [2, 3]
    console.log(removedElement); // 1
    
  • slice():返回数组的一个子数组,不修改原数组。

    let arr = [1, 2, 3, 4, 5];
    let newArr = arr.slice(1, 4);
    console.log(newArr); // [2, 3, 4]
    

  • splice():用于添加、删除或替换数组元素,返回操作元素。
    let arr = [1, 2, 3, 4, 5];
    let removedElements = arr.splice(2, 2, 6, 7);
    console.log(arr); // [1, 2, 6, 7, 5]
    console.log(removedElements); // [3, 4]
    

  • indexOf():返回元素首次出现的索引,找不到返回 -1。

    let arr = [1, 2, 3, 4];
    let index = arr.indexOf(3);
    console.log(index); // 2
    
  • includes():判断数组中是否存在某个元素。

    let arr = [1, 2, 3, 4];
    let hasThree = arr.includes(3);
    console.log(hasThree); // true
    
  • find():返回第一个符合条件的元素。

    let arr = [1, 2, 3, 4];
    let found = arr.find(element => element > 2);
    console.log(found); // 3
    
  • some():判断数组中是否有至少一个元素满足条件。

    let arr = [1, 2, 3, 4];
    let hasEven = arr.some(element => element % 2 === 0);
    console.log(hasEven); // true
    
  • every():判断数组中是否全部元素满足条件。

    let arr = [1, 2, 3, 4];
    let allEven = arr.every(element => element % 2 === 0);
    console.log(allEven); // false
    

迭代:

  • forEach():遍历数组,适合执行副作用操作。

    let arr = [1, 2, 3];
    arr.forEach((item, index) => {
      console.log(`Index: ${index}, Item: ${item}`);
    });
    // Output:
    // Index: 0, Item: 1
    // Index: 1, Item: 2
    // Index: 2, Item: 3
    
  • map():对数组的每个元素进行转换,返回新数组。

    let arr = [1, 2, 3];
    let doubled = arr.map(item => item * 2);
    console.log(doubled); // [2, 4, 6]
    
  • filter():过滤符合条件的数组项,返回新数组。

    let arr = [1, 2, 3, 4, 5];
    let evenNumbers = arr.filter(item => item % 2 === 0);
    console.log(evenNumbers); // [2, 4]
    
  • reduce():将数组中的所有元素按照某种规则累加/组合,返回单个值。

    let arr = [1, 2, 3, 4];
    let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
    console.log(sum); // 10
    

排序:

  • sort():根据指定的排序规则对数组进行排序,默认按字符编码排序,可以传入比较函数来进行自定义排序。

    let arr = [4, 2, 5, 1, 3];
    arr.sort();  // 默认按字符编码排序
    console.log(arr); // [1, 2, 3, 4, 5]
    
    // 自定义排序(数字升序)
    let numArr = [4, 2, 5, 1, 3];
    numArr.sort((a, b) => a - b);
    console.log(numArr); // [1, 2, 3, 4, 5]
    
    // 自定义排序(数字降序)
    numArr.sort((a, b) => b - a);
    console.log(numArr); // [5, 4, 3, 2, 1]
    
  • reverse():反转数组的顺序。

    let arr = [1, 2, 3, 4, 5];
    arr.reverse();
    console.log(arr); // [5, 4, 3, 2, 1]
    

转换:

  • join():将数组转换为一个字符串,使用指定的分隔符连接各个元素。

    let arr = [1, 2, 3, 4, 5];
    let str = arr.join('-');
    console.log(str); // "1-2-3-4-5"
    
  • toString():将数组转换为一个字符串,元素之间以逗号分隔。

    let arr = [1, 2, 3, 4, 5];
    let str = arr.toString();
    console.log(str); // "1,2,3,4,5"
    
  • from():将类数组对象或可迭代对象转换为数组。(也可以用扩展运算符[...])

    let str = 'hello';
    let arr = Array.from(str);
    console.log(arr); // ['h', 'e', 'l', 'l', 'o']
    console.log([...arr]); // ['h', 'e', 'l', 'l', 'o']