Array 构造器

MDNopen in new window

凡是通过 Array 构造函数创建的对象,都是数组。

静态成员

  • Array.from():可以将伪数组转为真数组。方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。

  • Array.isArray(): 用于确定传递的值是否是一个 Array。

  • Array.of(): 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

Array.of() 和 Array 构造函数之间的区别在于处理整数参数:

Array.of(7)创建一个具有单个元素 7 的数组,而Array(7) 创建一个长度为 7 的空数组

【注意】这是指一个有 7 个空位(empty)的数组,而不是由 7 个 undefined 组成的数组。

实例成员

  • fill()

    填充数组,将数组中指定区间的所有元素的值,都替换成某个固定的值。

  • pop()

    删除数组的最后一个元素,并返回这个元素。

  • push()

    在数组的末尾增加一个或多个元素,并返回数组的新长度(该方法修改原有数组)。

  • reverse()

    颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个。

  • shift()

    删除数组的第一个元素,并返回这个元素。

  • sort()

    对数组元素进行排序,并返回当前数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的

  • splice()

    在任意的位置给数组添加或删除任意个元素。

    通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。

    此方法会改变原数组。

    返回值:由被删除的元素组成的一个数组。

    如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

  • unshift()

    方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。

访问方法

下面的这些方法绝对不会改变调用它们的对象的值,只会返回一个新的数组或者返回一个其它的期望值。

  • concat()

    方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

    语法:var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

  • includes()

    判断当前数组是否包含某指定的值,如果是返回 true,否则返回 false。

    注意:使用 includes()比较字符串和字符时是区分大小写。

    语法:arr.includes(valueToFind[, fromIndex])

    参数 1: valueToFind 需要查找的元素值。

    参数 2 fromIndex 可选;从 fromIndex 索引处开始查找 valueToFind。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜 (即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。默认为 0。

  • join()

    方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。

    参数: separator 可选;指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果缺省该值,数组元素用逗号(,)分隔。如果 separator 是空字符串(""),则所有元素之间都没有任何字符。 如果数组中一个元素为 undefined 或 null,它会被转换为空字符串。

  • slice()

    返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括 end)。原始数组不会被改变。

    语法:arr.slice([begin[, end]])

    参数:

    begin 可选;

    提取起始处的索引(从 0 开始),从该索引开始提取原数组元素。 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 如果省略 begin,则 slice 从索引 0 开始。 如果 begin 大于原数组的长度,则会返回空数组。

    end 可选;

    提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。 slice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3 的元素)。 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。 如果 end 被省略,则 slice 会一直提取到原数组末尾。 如果 end 大于数组的长度,slice 也会一直提取到原数组末尾。

  • toString() 返回一个字符串,表示指定的数组及其元素。 对于数组对象,toString 方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素。 当一个数组被作为文本值或者进行字符串连接操作时,将会自动调用其 toString 方法。

  • indexOf()

    返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

    语法:arr.indexOf(searchElement[, fromIndex])

  • lastIndexOf()

    方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。语法同 indexOf

  • forEach()

    遍历数组,返回值 undefined

    语法:arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

    参数 callback 为数组中每个元素执行的函数,该函数接收一至三个参数:

    • currentValue 数组中正在处理的当前元素。
    • index 可选,数组中正在处理的当前元素的索引。
    • array 可选,forEach() 方法正在操作的数组。
  • every()

    如果数组中的每个元素都满足测试函数,则返回 true,否则返回 false。

    语法:arr.every(callback(element[, index[, array]])[, thisArg])

    注意:如果用一个空数组进行测试,在任何情况下它返回的都是 true。

  • some()

    如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。

    语法:arr.some(callback(element[, index[, array]])[, thisArg])

    注意:如果用一个空数组进行测试,在任何情况下它返回的都是 false。

  • filter()

    过滤,将所有在过滤函数中返回 true 的数组元素放进一个新数组中并返回。

  • find()

    找到第一个满足测试函数的元素并返回该元素的值,如果找不到,则返回 undefined。

  • findIndex()

    找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1。

  • map()

    映射,将数组的每一项映射为另外一项,返回一个由回调函数的返回值组成的新数组。

  • reduce()

    统计,累计,对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。

    语法:arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

    参数

    callback

    执行数组中每个值 (如果没有提供 initialValue 则第一个值除外)的函数,包含四个参数:

    • accumulator 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或 initialValue(见于下方)。
    • currentValue 数组中正在处理的元素。
    • index 可选 数组中正在处理的当前元素的索引。 如果提供了 initialValue,则起始索引号为 0,否则从索引 1 起始。
    • array 可选 调用 reduce()的数组

    initialValue 可选 作为第一次调用 callback 函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。