创建数组
构造函数
const arr = new Array();
const arr = new Array(3);
const arr = new Array(1, 2, 3);
数组字面量
const arr = []
const arr = [1, 2, 3]
数组API
增加元素
- push(): 在数组的末尾添加一个或多个元素,并返回新的长度。
- unshift(): 在数组的开头添加一个或多个元素,并返回新的长度。
- concat(): 将多个数组或者数值连接起来,返回一个新的数组。
const arr = [1, 2, 3];
const len = arr.push(4, 5);
const len = arr.unshift(-2, -1, 0);
const arr2 = [4, 5];
const newArr = arr.concat(arr2);
删除元素
- pop(): 从数组的末尾删除一个元素,并返回该元素。
- shift(): 从数组的开头删除一个元素,并返回该元素。
- splice(): 删除指定位置的元素,并可以插入新的元素。
const arr = [1, 2, 3]
const deletedItem = arr.pop()
const deletedItem = arr.shift()
const deletedItems = arr.splice(1, 1, 4, 5)
修改元素
- fill(): 将数组中的所有元素替换为指定的值。
- copyWithin(): 从数组的指定位置开始复制元素,覆盖到指定的位置。
- reverse(): 反转数组中元素的顺序。
- sort() : 按顺序排序
const arr = [1, 2, 3];
arr.fill(0); // [0, 0, 0]
arr.copyWithin(0, 1, 2); // [2, 2, 3]
arr.reverse(); // [3, 2, 1]
arr.sort((a, b) => a - b); //[1, 2, 3]
查询元素
- for 循环:最基本的循环语句
- for...of:遍历可迭代对象(如数组、字符串、Set、Map 等)的循环语句,循环体中的语句会对每个元素执行一次。
- for...in:遍历对象中的属性的循环语句,循环体中的语句会对每个属性执行一次。
- keys():返回一个包含数组所有索引的迭代器对象。
- values():返回一个包含数组所有元素的迭代器对象。
- entries():返回一个包含数组所有索引及其对应元素的迭代器对象。
- indexOf():返回数组中指定元素第一次出现的索引,如果不存在则返回-1。
- lastIndexOf():返回数组中指定元素最后一次出现的索引,如果不存在则返回-1。
- includes():判断数组中是否包含指定元素,如果包含则返回true,否则返回false。
- slice():返回原数组的一个子集,即从原数组中选取一部分元素组成新数组,不会对原数组进行修改。
- find():返回数组中第一个符合条件的元素,如果不存在则返回undefined。
- findIndex():返回数组中第一个符合条件的元素的索引,如果不存在则返回-1。
- every():判断数组中的所有元素是否都满足指定条件,如果都满足则返回true,否则返回false。
- filter():返回一个新数组,其中包含符合指定条件的所有元素。
- forEach():对数组中的每个元素执行指定操作。
- map():返回一个新数组,其中包含每个元素被指定操作处理后的结果。
- some():判断数组中是否至少有一个元素满足指定条件,如果有则返回true,否则返回false。
- reduce():对数组中的每个元素执行指定操作并返回一个累加器值。
const arr = [1,2,3]
for (let i = 0
console.log(arr[i])
}
for (const item of arr) {
console.log(item)
}
for (const index in arr) {
console.log(arr[index])
}
const keys = arr.keys()
console.log(Array.from(keys))
const values = arr.values()
console.log(Array.from(values))
const entries = arr.entries()
console.log(Array.from(entries))
const index = arr.indexOf(2)
console.log(index)
const arr = [1,2,2,3]
const index = arr.lastIndexOf(2)
console.log(index)
const isPresent = arr.includes(2)
console.log(isPresent)
const slice1 = arr.slice(1, 2)
console.log(slice1)
const found = arr.find(num => num > 1)
console.log(found)
const foundIndex = arr.findIndex(num => num > 1)
console.log(foundIndex)
const isGreaterThanZero = arr.every(num => num > 0)
console.log(isGreaterThanZero)
const filteredArr = arr.filter(num => num > 1)
console.log(filteredArr)
arr.forEach(num => console.log(num))
const squaredArr = arr.map(num => num ** 2)
console.log(squaredArr)
const hasEvenNumber = arr.some(num => num % 2 === 0)
console.log(hasEvenNumber)
const sum = arr.reduce((acc, num) => acc + num, 0)
console.log(sum)
会修改原始数组的方法
- push(element1, ..., elementN)
- pop()
- shift()
- unshift(element1, ..., elementN)
- splice(startIndex, deleteCount, element1, ..., elementN)
- reverse()
- sort()
检测数组
- instanceof
- isArray
- constructor
- Object.prototype.toString
const arr = [1, 2, 3];
arr instanceof Array
Array.isArray(arr)
arr.constructor === Array
Object.prototype.toString.call(arr) === '[object Array]'