Skip to main content

数组使用扩展

一、Array.from()

Array.from(arrayLike[, mapFn[, thisArg]])

功能:将一个伪数组或可迭代对象转为数组,并返回这个新数组。

参数:

  • arrayLike:想要转换成数组的伪数组对象或可迭代对象。
  • mapFn(可选):如果指定了该参数,新数组中的每个元素会执行该回调函数。
  • thisArg(可选):执行回调函数 mapFnthis 对象。

返回值:一个新的数组实例。

示例:

console.log(Array.from('foo'));                 // ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x)); // [2, 4, 6]

二、Array.of()

Array.of(element0[, element1[, ...[, elementN]]])

功能:创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。

Array.of()Array 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为 7 的空数组(注意:这是指一个有 7 个空位(empty)的数组,而不是由 7undefined 组成的数组)。

参数:elementN:任意个参数,将按顺序成为返回数组中的元素。

返回值:新的 Array 实例。

示例:

Array.of(7);       // [7]
Array.of(1, 2, 3); // [1, 2, 3]

Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]

三、copyWithin()

arr.copyWithin(target[, start[, end]])

功能:浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。

参数:elementN:任意个参数,将按顺序成为返回数组中的元素。

  • target(必须):复制序列到该位置。
  • start(可选):开始复制元素的起始位置。
  • end(可选):开始复制元素的结束位置。

返回值:改变后的数组。

示例:

const array1 = ['a', 'b', 'c', 'd', 'e'];

console.log(array1.copyWithin(0, 3, 4)); // ["d", "b", "c", "d", "e"]
console.log(array1.copyWithin(1, 3)); // ["d", "d", "e", "d", "e"]

四、find 和 findIndex

1、find

arr.find(callback[, thisArg])

功能:返回数组中满足提供函数的第一个元素的值。如果没有满足的值则返回 undefined

参数:

  • callback(currentValue[, index, array]):在数组每一项上执行的函数,使用三个参数:数组中正在处理的当前元素、数组中正在处理的当前元素的索引、find 方法调用的数组。
  • thisArg(可选):执行 callback 函数时值被用作 this。

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

示例:

const arr1 = [5, 12, 8, 109, 44];

console.log(arr1.find(element => element > 10)) // 12
console.log(arr1.find(element => element > 110)) // undefined
console.log(arr1); // [5, 12, 8, 109, 44]

2、findIndex

arr.findIndex(callback[, thisArg])

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

参数:

  • callback(currentValue[, index, array]):在数组每一项上执行的函数,使用三个参数:数组中正在处理的当前元素、数组中正在处理的当前元素的索引、findIndex 方法调用的数组。
  • thisArg(可选):执行 callback 函数时值被用作 this。

返回值:数组中通过提供测试函数的第一个元素的索引。否则,返回 -1

示例:

const arr1 = [5, 12, 8, 109, 44];

console.log(arr1.findIndex(element => element > 10)) // 1
console.log(arr1.findIndex(element => element > 110)) // -1
console.log(arr1); // [5, 12, 8, 109, 44]

五、fill()

arr.fill(value[, start[, end]])

功能:用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

参数:

  • value:用来填充数组元素的值。
  • start(可选):起始索引,默认为 0。
  • end(可选):终止索引,默认值为 this.length。

返回值:修改后的数组。

示例:

const arr1 = [1, 2, 3, 4];

console.log(arr1.fill(0, 2, 4)); // [1, 2, 0, 0]
console.log(arr1.fill(5, 1)); // [1, 5, 5, 5]
console.log(arr1.fill(6)); // [6, 6, 6, 6]

六、keys()

arr.keys()

功能:返回一个包含数组中每个索引键的 Array Iterator 对象。

参数:

返回值:一个新的 Array 迭代器对象。

示例:

const array1 = ['a', 'b', 'c'];
const iterator = array1.keys();

for (const key of iterator) {
console.log(key);
}

// 0
// 1
// 2

七、values()

arr.values()

功能:返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。

参数:

返回值:一个新的 Array 迭代器对象。

示例:

const array1 = ['a', 'b', 'c'];
const iterator = array1.values();

for (const value of iterator) {
console.log(value);
}

// "a"
// "b"
// "c"

八、entries()

arr.entries()

功能:返回一个新的 Array Iterator 对象,该对象包含数组中每个索引的键/值对。

参数:

返回值:一个新的 Array 迭代器对象。

示例:

const array1 = ['a', 'b', 'c'];
const iterator1 = array1.entries();

console.log(iterator1.next().value); // [0, "a"]
console.log(iterator1.next().value); // [1, "b"]

九、includes()

arr.includes(valueToFind[, fromIndex])

功能:返回一个 boolean,判断数组是否包含一个指定值(区分大小写)。

参数:

  • valueToFind:需要查找的元素值。
  • fromIndex(可选):从该索引处开始查找,如果为负值则从末尾开始往前跳,默认为 0。

返回值:如果在数组中找到了则返回 true,否则返回 false。

示例:

const pets = ['cat', 'dog', 'bat'];

console.log(pets.includes('cat')); // true
console.log(pets.includes('cat', 1)); // false
console.log(pets.includes('at')); // false
console.log(pets); // ['cat', 'dog', 'bat']

更多 Array 内置属性和方法请点击