JS-常见数组方法总结(是否返回新数组)

根据是否改变原数组,JavaScript 的 Array API 可以分为两大类:变异方法(Mutating Methods)非变异方法(Non-Mutating Methods)

变异方法(Mutating Methods)

这些方法会直接修改原数组,并返回一个值(通常是修改后的数组长度或被移除的元素)。

  1. push(element1, ..., elementN)

    • 作用:向数组的末尾添加一个或多个元素,并返回新的长度。
    • 示例
      let arr = [1, 2, 3];
      let newLength = arr.push(4, 5);
      console.log(arr);      // [1, 2, 3, 4, 5]
      console.log(newLength); // 5
      
  2. pop()

    • 作用:移除数组的最后一个元素,并返回该元素。
    • 示例
      let arr = [1, 2, 3];
      let lastElement = arr.pop();
      console.log(arr);      // [1, 2]
      console.log(lastElement); // 3
      
  3. shift()

    • 作用:移除数组的第一个元素,并返回该元素。
    • 示例
      let arr = [1, 2, 3];
      let firstElement = arr.shift();
      console.log(arr);      // [2, 3]
      console.log(firstElement); // 1
      
  4. unshift(element1, ..., elementN)

    • 作用:向数组的开头添加一个或多个元素,并返回新的长度。
    • 示例
      let arr = [1, 2, 3];
      let newLength = arr.unshift(0, -1);
      console.log(arr);      // [-1, 0, 1, 2, 3]
      console.log(newLength); // 5
      
  5. splice(start, deleteCount, item1, ..., itemN)

    • 作用:从数组中添加或删除元素。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let removedElements = arr.splice(2, 1, 'a', 'b');
      console.log(arr);          // [1, 2, 'a', 'b', 4, 5]
      console.log(removedElements); // [3]
      
  6. sort([compareFunction])

    • 作用:对数组的元素进行排序,并返回排序后的数组。
    • 示例
      let arr = [3, 1, 2];
      arr.sort();
      console.log(arr); // [1, 2, 3]
      
  7. reverse()

    • 作用:颠倒数组中元素的顺序,并返回颠倒后的数组。
    • 示例
      let arr = [1, 2, 3];
      arr.reverse();
      console.log(arr); // [3, 2, 1]
      
  8. fill(value, start, end)

    • 作用:用一个固定值填充数组的一部分。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      arr.fill(0, 1, 3);
      console.log(arr); // [1, 0, 0, 4, 5]
      

非变异方法(Non-Mutating Methods)

这些方法不会修改原数组,而是返回一个新的数组或值。

  1. slice(start, end)

    • 作用:返回一个新的数组,包含从 startend(不包括 end)的元素。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let newArr = arr.slice(1, 3);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(newArr);   // [2, 3] (新数组)
      
  2. concat(array1, ..., arrayN)

    • 作用:返回一个新的数组,包含原数组和传入的参数拼接而成的元素。
    • 示例
      let arr1 = [1, 2, 3];
      let arr2 = [4, 5];
      let newArr = arr1.concat(arr2);
      console.log(arr1);      // [1, 2, 3] (原数组不变)
      console.log(newArr);    // [1, 2, 3, 4, 5] (新数组)
      
  3. map(callback, thisArg)

    • 作用:返回一个新的数组,其结果是对原数组中的每个元素调用 callback 函数。
    • 示例
      let arr = [1, 2, 3];
      let newArr = arr.map(x => x * 2);
      console.log(arr);      // [1, 2, 3] (原数组不变)
      console.log(newArr);   // [2, 4, 6] (新数组)
      
  4. filter(callback, thisArg)

    • 作用:返回一个新的数组,包含通过 callback 函数测试的所有元素。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let newArr = arr.filter(x => x % 2 === 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(newArr);   // [2, 4] (新数组)
      
  5. reduce(callback, initialValue)

    • 作用:对数组中的每个元素调用 callback 函数,返回一个累积结果。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let sum = arr.reduce((acc, curr) => acc + curr, 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(sum);      // 15
      
  6. every(callback, thisArg)

    • 作用:测试数组中的所有元素是否都通过 callback 函数的测试。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let allPositive = arr.every(x => x > 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(allPositive); // true
      
  7. some(callback, thisArg)

    • 作用:测试数组中是否有至少一个元素通过 callback 函数的测试。
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let hasEven = arr.some(x => x % 2 === 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(hasEven);  // true
      
  8. find(callback, thisArg)

    • 作用:返回数组中满足 callback 函数的第一个元素,否则返回 undefined
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let firstEven = arr.find(x => x % 2 === 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(firstEven); // 2
      
  9. findIndex(callback, thisArg)

    • 作用:返回数组中满足 callback 函数的第一个元素的索引,否则返回 -1
    • 示例
      let arr = [1, 2, 3, 4, 5];
      let firstEvenIndex = arr.findIndex(x => x % 2 === 0);
      console.log(arr);      // [1, 2, 3, 4, 5] (原数组不变)
      console.log(firstEvenIndex); // 1
      

总结

  • 变异方法:会直接修改原数组,并返回一个值(通常是修改后的数组长度或被移除的元素)。
  • 非变异方法:不会修改原数组,而是返回一个新的数组或值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值