JavaScript 数组

数组的概念

定义:在内存中用一串连续地址存放的数据类型。
表示:在 JavaScript 中用方括号 [] 表示。

数组的创建

字面量

let arr = []; // 创建空数组
let arr = [1, 2, 3]; // 创建含有3个数字的数组

new Array()

let arr = new Array(); // 创建空数组
let arr = new Array(1, 2, 3); // 创建含有3个数字的数组
let arr = new Array(2); // 创建长度为2的空数组

区别:字面量生成的是一个数组,new Array() 生成的是一个对象

二维数组的创建

字面量

let arr = [[0, 0], [0, 0]]; // 创建一个全为0的2×2数组

new Array()

let arr = Array.from({ length: 2 }, _ => new Array(2).fill(0)); // 创建一个全为0的2×2数组

注意:相比于 for 循环遍历生成,Array.from() 的时间复杂度为 n,小于 for 循环的 n2,因此建议使用 Array.from()。

数组方法

方法名 语法 说明 返回值 是否改变原数组
join array.join(‘符号’) 把数组转化为字符串,每个子元素用 参数符号 隔开(若没有参数则默认逗号) 转化后字符串
toString array.toString() 把数组转化为字符串(逗号分隔) 转化后字符串
push array.push(参数) 把参数添加到数组尾部 新数组的长度(数字)
pop array.pop() 删除数组尾部一个元素 删除元素
unshift array.unshift(参数) 把参数添加到数组头部 新数组的长度(数字)
shift array.shift() 删除数组头部一个元素 删除元素
reverse array.reverse() 反转数组 新数组
sort array.sort(function) 排序,function 要有返回值,返回值为 false——不变,返回值为 true——改变位置 新数组
concat array.concat(newArray) 数组拼接 新数组
splice array.splice(开始截取的位置, 截取的长度, 替换的内容) 截取 / 删除数组(三个参数都可选) 删除数组
slice array.slice(开始截取的位置, 结束截取的位置) 截取 / 删除数组(左闭又开)(两个参数可选) 删除数组
Array.isArray Array.isArray(array) 判断参数是否是数组 布尔值
Math.max.apply() Math.max.apply(null, arr) 等价于 Math.max(…array) 求数组的最大值 Number
Math.min.apply() Math.min.apply(null, arr) 等价于 Math.min(…array) 求数组的最小值 Number
Array.from() Array.from(obj, callback) 将一个类数组对象或者可遍历对象转换成一个真正的数组(obj 可以为 Set、String、Object、Array)(callback 回调函数可选) Array

数组迭代方法

方法名 语法 说明 注意点 返回值
forEach() arrar.forEach(function(item, index, arr) {})(value:索引值;index:索引号;array:原数组)(除了 item 都可以省略) 遍历数组的每一项,并对每一项执行参数方法 不能用跳出循环 undefined
map array.map(function(item, index, arr) {})(参数同上) 遍历数组的每一项,并对每一项执行参数方法(数组的每一项为参数方法的 return,若无 return 则每一项为 undefined) 不能用跳出循环、不会遍历空数组 新数组
filter array.filter(function(item, index, arr) {})(参数同上) 遍历数组的每一项,赛选符合条件的项(若参数方法返回 true,则该项保留;若返回 false,则该项过滤) 新数组
find array.find(function(item, index, arr) {})(参数同上) 查找符合条件的项(若参数方法返回 true,则返回该项;若返回 false,则该项跳过) 符合条件的第一项
findIndex array.findIndex(function(item, index, arr) {})(参数同上) 查找符合条件的项(若参数方法返回 true,则返回该项;若返回 false,则该项跳过) 符合条件的第一项的索引
some array.some(function(item, index, arr) {})(参数同上) 遍历数组的每一项,并对每一项执行参数方法【有真则真】(若有一个返回 true,则返回 true) 布尔值
every array.every(function(item, index, arr) {})(参数同上) 遍历数组的每一项,并对每一项执行参数方法【有假则假】(若有一个返回 false,则返回 false) 布尔值
reduce array.reduce(function(total, item, index, array) {}, initValue)(total:总数(初始值 / 先前返回的值);item:索引值;index:索引号;array:原数组;initValue:初始值)(除了 item 都可以省略) 从第二项开始遍历数组,并对每一项执行参数方法 最后一次遍历的返回值
reduceRight 同 reduce 同 reduce,区别在于从后开始遍历 最后一次遍历的返回值
indexOf array.indexOf(value) 遍历数组,找出参数 value 第一次出现的位置 返回第一个 value 的索引(若没有则返回 -1)
lastIndexOf() 同 indexOf 同 indexOf,区别在于从后开始遍历 返回第一个 value 的索引(若没有则返回 -1)

你可能感兴趣的:(javascript,算法,开发语言)