数组使用扩展
一、Array.from()
Array.from(arrayLike[, mapFn[, thisArg]])
功能:将一个伪数组或可迭代对象转为数组,并返回这个新数组。
参数:
- arrayLike:想要转换成数组的伪数组对象或可迭代对象。
- mapFn(可选):如果指定了该参数,新数组中的每个元素会执行该回调函数。
- thisArg(可选):执行回调函数
mapFn
时this
对象。
返回值:一个新的数组实例。
示例:
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)的数组,而不是由 7 个 undefined
组成的数组)。
参数: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']