“数组"的梳理与总结


关联数组使用非整数并通过 方括号 或 点号 来访问或设置数组元素时,所操作的并不是数组列表中的元素,而是数组对象的 属性集合 上的变量。数组对象的属性和数组元素列表是分开存储的,并且数组的遍历和修改操作也不能作用于这些命名属性。稀疏数组是包含空项的数组;

创建数组

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):用于确定传递的值是否是一个 ArrayArray.isArray(Array.prototype)返回true;