JS数组方法

48 阅读6分钟
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

一、实例方法

  1. at() : 元素在哪

at(index) -- 找出index位置的元素, index 正数、负数、0; (正整数、负整数和 0 统称为整数)。

如果index取小数时,向0靠近取整数。 image.png

  1. concat() : 拼接数组

concat() -- 合并2个(多个)数组,得到一个新数组。不改变现有数组。

console.log([1,2,3].concat(['a','b','c']))
// [1, 2, 3, 'a', 'b', 'c']

3. copyWithin() :

浅复制数组的一部分到当前数组的另一个位置,并返回更新后的数组,原数组长度不变。

    onst array1 = ["a", "b", "c", "d", "e"]; 
    array1.copyWithin(0,3,4);
    array1 =  ['d', 'b', 'c', 'd', 'e']
    
    (0,3,4)// Copy to index 0 the element at index 3 - 索引为3的元素,复制到索引为0的位置。
    复制索引在这个区间[3,4)的元素,到索引为0的位置。
  1. entires() :

返回一个新的 数组迭代器 对象,该对象包含数组中每个索引的键/值对。

4.1 当在[稀疏数组] 上使用时,entries() 方法迭代空槽,就像它们的值为 undefined 一样。

4.2 entries() 方法是[通用的]。它只要求 this 值具有 length 属性和以整数为键的属性。


   const array1 = ["a", "b", "c", "d", "e"];
   const iterator1 = array1.entries();  
   
   iterator1.next().value  //  [0, 'a']
   iterator1.next().value  //  [1, 'b']

   for (const element of [    , "a"].entries()) {
     console.log(element);
   }
   // [0, undefined]
   // [1, 'a'] 
  1. every() : 每个元素执行回调函数

    测试数组内的所有元素是否都通过指定函数的测试。返回boolean

  2. fill()

    用一个固定值填充数组中从索引位置到终止索引内的全部元素。返回修改后的数组。

  3. filter( callback ):浅拷贝数组元素,符合 callback 里面条件,得到一个新数组。

    创建给定数组一部分的浅拷贝,包含通过所提供函数 return true 的元素。

    
    const words = ["spray", "elite", "exuberant", "destruction", "present"];
    const result = words.filter((word) => word.length > 6);
    console.log(result);
    // Expected output: Array ["exuberant", "destruction", "present"]
    
    
  4. find():找到元素,否则 undefined

    返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined;

  5. findIndex():找到元素索引,否则-1

    返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。

  6. findLast() : 找到 满足回调函数的最后一个元素,否则undefined

    反向迭代数组,并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回undefined

  7. findLastIndex():

    反向迭代数组,并返回满足所提供的测试函数的第一个元素的索引。若没有找到对应元素,则返回 -1。

  8. flat():

    创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中。

  9. flatMap()

    对数组中的每个元素应用给定的回调函数,然后将结果展开一级,返回一个新数组。

    它等价于在调用 map() 方法后再调用深度为 1 的 flat() 方法(arr.map(...args).flat()),但比分别调用这两个方法稍微更高效一些。

  10. forEach():

    对数组的每个元素执行一次回调函数。

  11. includes(el): 是否有el元素。

    用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回 false

  12. indexOf()

    返回数组中第一次出现给定元素的下标。否则返回-1;

  13. join()

    将数组所有元素拼接成一个字符串,并返回这个字符串。

  14. keys()

    返回一个新的 数组迭代器 对象,其中包含数组中每个索引的键。

  15. lastIndexOf(searchElement, fromIndex?)

    返回数组中给定元素最后一次出现的索引,如果不存在则返回 -1。该方法从 fromIndex 开始向前搜索数组。

  16. map()

    创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。

  17. pop()

  18. push()

  19. reduce()

    对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计果作为参数传入,最后将其结果汇总为单个返回值。

    第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被用作初始值,迭代器将从第二个元素开始执行(即从索引为 1 而不是 0 的位置开始)。

    翻译上面话: initialValue 没有时,array1[0] 作为初始值,


    const array1 = [1, 2, 3, 4];
    // 0 + 1 + 2 + 3 + 4
    const initialValue = 0;
    const sumWithInitial = array1.reduce(
       // 执行函数
      (accumulator/* 上一次结果*/, currentValue/* 当前值 */) => accumulator + currentValue,
      // 初始值
      initialValue,
    );

    console.log(sumWithInitial);
    // Expected output: 10

24.reduceRight()

reduce() 方法,从右侧开始

  1. reverse()

反转数组中的元素,并返回同一数组的引用。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。换句话说,数组中的元素顺序将被翻转,变为与之前相反的方向。

  1. shift(); 删除第一元素

  2. unshift(); 添加为第一个元素

  3. slice()

    返回一个新的数组对象,这一对象是一个由 start 和 end 决定的原数组的[浅拷贝] ,(包括 start,不包括 end),其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。

  4. some()

    测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true,则返回 true;否则返回 false。它不会修改数组。

  5. sort()

    对数组的元素进行排序,并返回对相同数组的引用。默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。

  6. splice(start, deleteCount, item1, item2, /* …, */ itemN)

    就地移除或者替换已存在的元素和/或添加新的元素。

    start : 从 0 开始计算的索引,表示要开始改变数组的位置

    deleteCount 可选 : 一个整数,表示数组中要从 start 开始删除的元素数量。

    item1、…、itemN 可选 : 从 start 开始要加入到数组中的元素。

  7. toLocaleString()

    返回一个字符串,表示数组中的所有元素。每个元素通过调用它们自己的 toLocaleString 方法转换为字符串,并且使用特定于语言环境的字符串(例如逗号“,”)分隔开。

  8. roReversed()

  9. toSorted()

  10. toSpliced()

  11. toString()

  12. values()

    返回一个新的 数组迭代器 对象,该对象迭代数组中每个元素的值。

  13. with()

  14. [Symbol.iterator]()