数组

1、扩展运算符...
...a
a 需要满足:已实现iterator接口,才能可遍历,才能使用扩展运算符;如未部署iterator接口,可根据自己实际业务需求自行部署

2、Array.from()
用于将 类数组对象 和 可遍历对象(包括SET,MAP,DOM),转化为真正的数组
类数组对象,有length属性,索引是从0开始

3、数组方法归类类型
1)破坏性数组:
copyWithin()、fill()、pop()、push()、reverse()、shift()、sort()、splice()、unshift()

2)非破坏性数组:
concat()、filter()、flat()、flatMap()、map()、slice()、
splice()(构造返回的已删除元素数组)

3)循环类数组:
forEach()、every()、filter()、flatMap()、map()、reduce() 和 reduceRight() 等等

4、稀疏数组;方法对空槽的处理
1)旧方法对于空槽是直接跳过不处理;如every
2)新方法认为空槽是undefind值,循环时会按照undefined值进入循环体内部并处理;如find

5、通用数组方法;将数组方法应用在类数组对象上
数组方法总是通用的——它们不访问数组对象的任何内部数据。它们只通过 length 属性和索引访问数组元素。这意味着它们也可以在类数组对象上调用。
const arrayLike = {0: "a", 1: "b", length: 2};
console.log(Array.prototype.join.call(arrayLike, "+")); // 'a+b'

6、操作length
1)length 属性被转换为一个数字,被截断为一个整数,然后固定为 0 到 253 - 1 之间的范围。NaN 变成 0,所以即使 length 没有出现或 undefined,它也会表现得好像它的值是 0。
2)数组length属性可以直接访问,也可以操作其值
当操作值大于原本length长度时=>数组变长,补充empty空置,成为稀疏数组
当操作值小于原本length长度时=>数组变短,直接从0开始截断数组

7、浅拷贝和深拷贝
所有内置的数组复制操作(展开语法、Array.from()、Array.prototype.slice() 和 Array.prototype.concat())都会创建浅拷贝;对象的浅拷贝如Object.assign。
如果你想要一个数组的深拷贝,你可以使用 JSON.stringify() 将数组转换成一个 JSON 字符串,然后使用 JSON.parse() 将字符串转换回一个完全独立于原数组的新数组。

简单的浅拷贝,只拷贝内部一层的值(基本数据类型值或者引用数据类型地址):

点击查看代码
    let a = ['a', 'b', [2]]
    let b = Array.from(a)
    a === b         // false
    a[2] === b[2]   // true
8、some和every区别 some 检测到为true的元素就停止循环 every 每个元素均检测

9、reduce用法
reducer 逐个遍历数组元素,每一步都将当前元素的值与上一步的计算结果相加(上一步的计算结果是当前元素之前所有元素的总和)——直到没有更多的元素被相加。

点击查看代码
    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);  // output: 10
参数: 1)callbackFn 回调函数 回调函数参数:一个“reducer”函数,包含四个参数: previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]。 currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。 currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。 array:用于遍历的数组。 2)initialValue 可选 作为第一次调用 callback 函数时参数 previousValue 的值。若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;否则 previousValue 将使用数组第一个元素,而 currentValue 将使用数组第二个元素。
posted @ 2023-01-05 14:41  Math点PI  阅读(42)  评论(0)    收藏  举报