“数组"的梳理与总结
关联数组使用非整数并通过 方括号 或 点号 来访问或设置数组元素时,所操作的并不是数组列表中的元素,而是数组对象的 属性集合 上的变量。数组对象的属性和数组元素列表是分开存储的,并且数组的遍历和修改操作也不能作用于这些命名属性。稀疏数组是包含空项的数组;
创建数组
let arr = new Array(element0, element1, ..., elementN);
let arr =
new Array(arrayLength):如果参数是一个数字,则会创建一个指定长度的数组;
Array[Symbol.species]返回数组的构造函数// function Array();
let arr =
Array.of(element0[, element1[, ...[, elementN]]]):创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型;如果参数是一个数字,则会创建一个只有一个数字作为数组项的数组;
newArr=Array.from(arrayLike[, mapFn[, thisArg]]):对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例,
Array.from(new Set(arr))可以实现数组的去重
;
操作数组
arr.push(element1, ..., elementN):将一个或多个元素添加到数组的末尾,并返回该数组的新长度;
arr.pop():从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度;
arr.unshift(element1, ..., elementN):将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组);
arr.shift():从数组中删除第一个元素,并返回该元素的值;
array.splice(start[, deleteCount[, item1[, item2[, ...]]]]):通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容;
arr.slice([begin[, end]]):提取源数组的一部分并返回一个新数组;
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]):用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组(返回一个浅拷贝);
arr.reverse():将数组中元素的位置颠倒,并返回该数组,该方法会改变原数组;
arr.sort([compareFunction]):对数组元素进行原地排序并返回此数组,升序或者降序;
changedOldArr=arr.fill(value[, start[, end]]):用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引,返回修改后的原数组;
var newArray = arr.flat([depth]):按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回;
var newArray = arr.flatMap(callback(element[, index[, array]])[, thisArg]):使用映射函数映射每个元素,然后将结果压缩成一个新数组;
arr.copyWithin(target[, start[, end]]):浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度;
arr.join([separator]):将一个数组的所有元素连接成一个字符串并返回这个字符串;
arr.toString():返回一个字符串,表示指定的数组及其元素;
arr.toLocaleString([locales[,options]]):返回一个字符串表示数组中的元素。数组中的元素将使用各自的
Object.prototype.toLocaleString()
方法转成字符串;
arr.length
赋一个更小的值则会删掉一部分元素;
遍历/检测数组
arr.forEach(callback(currentValue [, index [, array]])[, thisArg]):对数组的每个元素执行一次给定的函数;
var newArray = arr.map(callback(element[, index[, array]])[, thisArg]):返回一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值;
boolea=arr.every(callback(element[, index[, array]])[, thisArg]):测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值(空数组返回true);
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg]):创建一个新数组, 其包含通过所提供函数实现的测试的所有元素;
arr.some(callback(element[, index[, array]])[, thisArg]):测试数组中是不是至少有一个元素通过了被提供的函数测试;
boolea=arr.includes(valueToFind[, fromIndex]):判断一个数组是否包含一个指定的值,如果包含则返回 true
,否则返回 false;
arr=at(index):接收一个整数值并返回该索引的项目,允许正数和负数。负整数从数组中的最后一个项目开始倒数。
arr.find(callback[, thisArg]):返回数组中满足提供的测试函数的第一个元素的值,否则返回
undefined
;
arr.findIndex(callback[, thisArg]):返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1;
arr.indexOf(searchElement[, fromIndex]):返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1;
arr.lastIndexOf(searchElement[, fromIndex]):返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1;
arr.reduce(function(previousValue, currentValue, currentIndex, array) { /*
return
... */ }, initialValue):对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值;
arr.reduceRight(callback(accumulator, currentValue[, index[, array]])[, initialValue]):接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值;
iterator=arr.entries():返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对;
for (let e of iterator) {
console.log(e)
};
arr.keys():返回一个包含数组中每个索引键的
Array Iterator
对象;
arr.values():返回一个新的
Array Iterator
对象,该对象包含数组每个索引的值(arr[Symbol.iterator]()是同一个方法
);
boolea=Array.isArray(obj):用于确定传递的值是否是一个 Array
,Array.isArray(Array.prototype)返回true
;