最近准备整理一下几个比较常用的去重、遍历函数,发现都在于数组打交道,顺带整理了一下常用的数组方法,可能不是很详尽,欢迎指正。
常用的几个数组方法
push()
作用:向数组的 末尾添加元素 (可一次添加多个)
说明: 会改变原数组 ,返回值为被添加元素后的新数组长度。
用法:a.push('10')
示例:
let a=[0,1,2,3];
a.push(4); //返回5 (新数组的长度)
console.log(a); //[0,1,2,3,4]
//添加多个
a.push(5,6); //返回7
console.log(a); // [0,1,2,3,4,5,6]
复制代码
unshift()
作用:向数组的 开头添加元素 (可一次添加多个)
说明: 会改变原数组 ,返回值为被添加元素后的新数组长度。
用法:a.unshift('10')
示例:
let a=[0,1,2,3];
a.unshift(4); //返回5 (新数组的长度)
console.log(a); //[4,0,1,2,3]
//添加多个
a.unshift(5,6); //返回7
console.log(a); // [5,6,4,0,1,2,3]
复制代码
pop()
作用:从数组的 末尾删除元素 (一次只能删除一个)
说明: 会改变原数组 ,返回值为被删除的那个元素。
用法:a.pop()
示例:
let a=[0,1,2,3];
a.pop(); //返回3 (被删除的元素)
console.log(a); //[0,1,2]
复制代码
shift()
作用:从数组的 开头删除元素 (一次只能删除一个)
说明: 会改变原数组 ,返回值为被删除的那个元素。
用法:a.shift()
示例:
let a=[0,1,2,3];
a.shift(); //返回0 (被删除的元素)
console.log(a); //[1,2,3]
复制代码
slice()
作用: 截取数组 ,将截取的部分形成新的数组
说明:
- 不会改变原数组 ,返回值为截取后的新数组。
- 有两个参数,第一个参数为开始截取的位置,第二个参数为结束的位置(第二个参数不写,默认截取到数组末尾)(从0开始数,包含第一个位置的元素但不包含第二个位置的元素)。
用法:a.slice(1[,2])
//[]内为可选参数
示例:
let a=[0,1,2,3,4,5,6,7]
a.slice(2,5); //返回[2,3,4] 从下标为2的元素开始截取,到下标为5的元素停止(不包含下标为5的元素)
a.slice(2); //返回[2,3,4,5,6,7] 从下标为2的元素截取到数组末尾
console.log(a); //[0,1,2,3,4,5,6,7](slice()不改变原数组,a无变化)
复制代码
splice()
作用:
- 删除数组元素
- 添加数组元素
说明:
- 会改变原数组 ,返回值为截取后的新数组。
- 有三个参数,第一个参数为开始截取的位置,第二个参数为截取的个数,第三个参数为要添加的元素(从0开始数),返回值为被截取的元素。
- 第二个参数表示截取的个数,可以不写;如果第二个参数不写,默认截取到最后,且第三个参数此时无法使用。
- 第三个参数表示要添加的元素(可以是多个),其位置依赖于第一个参数,总是在第一个参数所在位置的元素之前添加元素(也可以理解为要被添加的元素在新数组中的位置就是第一个参数)
用法:a.splice(1[,2[,3[,[···]]]])
//[]内为可选参数
示例:
let a=[0,1,2,3,4,5,6,7]
//删除数组元素
a.splice(2,2); //返回[2,3] (从下标为2的元素开始截取两个元素)
console.log(a); //[0, 1, 4, 5, 6, 7]
a.splice(3); //返回[5, 6, 7] (从下标为3的元素开始截取到数组末尾)
console.log(a); //?[0, 1, 4]
//添加数组元素
a.splice(2,0,9); //返回[], 从下标为2的元素开始截取0个元素,并在下标为2的元素之前添加新的元素“9”
console.log(a); //[0, 1, 9, 4]
//添加多个元素
a.splice(2,0,10,11,12); //返回[], 从下标为2的元素开始截取0个元素,并在下标为2的元素之前添加新的元素“10”,“11”,“12”
console.log(a); //[0, 1, 10, 11, 12, 9, 4]
//修改数组元素(其实就是先删除要修改的元素,在添加目标元素)
console.log(a); //[0, 1, 10, 11, 12, 9, 4]
//修改数组中第三个元素(下标为2),将“10”改为“20”
a.splice(2,1,20); //返回[10],从下标2开始截取1个元素=>“10”
console.log(a); //[0, 1, 20, 11, 12, 9, 4]
//修改多个元素同理,只是修改第二个元素和第三个元素就好
复制代码
reverse()
作用: 翻转数组
说明: 会改变原数组 ,返回值为翻转后的数组。
用法:a.reverse()
示例:
let a=[0,1,2,4];
a.reverse(); //返回[4, 2, 1, 0]
console.log(a); //[4, 2, 1, 0] 原数组改变
复制代码
concat()
作用:
- 连接数组
- 拷贝数组
说明:
- 不会改变原数组 ,返回值为连接后形成的新数组。
- 如果
()
中不填参数,则表示对数组a的拷贝。(当想使用一个数组a又不想改变原数组是可以使用)
用法:a.concat([b[,c[,d[...]]]])
//[]内为可选参数
示例:
let a=[0,1,2];
let b=[5,6,8];
let c=[10,11];
//连接数组
a.concat(b); //返回[0, 1, 2, 5, 6, 8]
a.concat(b,c); //返回[0, 1, 2, 5, 6, 8, 10, 11]
console.log(a); //[0, 1, 2] 原数组a不改变
console.log(b); //[5, 6, 8] 原数组b不改变
//拷贝数组(例如想得到a的翻转数组d却又不想改变a(防止其他地方使用到a时发生错误))
console.log(a); //[0, 1, 2] 原数组a不改变
let d=a.concat().reverse();
console.log(d); //[2, 1, 0]
console.log(a); //[0, 1, 2] 数组a并未改变
复制代码
join()
作用:将 数组转为字符串
说明:
- 不会改变原数组 ,返回值为转换后的字符串。
join()
中可以添加字符,用于连接数组中的元素。
用法:a.join()
示例:
let a=['hello','java','script']
a.join(); //返回 "hello,java,script"
a.join('-'); //返回 "hello-java-script"
console.log(a); //["hello", "java", "script"] 原数组未改变
复制代码
split()
作用:将 字符串转为数组
说明:
- 不会改变原字符串 ,返回值为转换后的数组。
split()
中可以添加字符,用于提供字符串拆分标准。
用法:a.split()
示例:
let a="hello-java-script";
a.split(); //返回 ["hello-java-script"] 不提供拆分标准,则直接将字符串变为数组中的一项,返回该数组
a.join('-'); //返回 ["hello", "java", "script"] 以"-"为标志,拆分字符串
console.log(a); //"hello-java-script" 原字符串未改变
复制代码
sort()
作用: 排序
说明:
- 会改变原字符串 ,返回值为排序后的数组。
- 默认用字符串规则排序(转换成ACSII码,逐位比较大小)
用法:a.sort(()=>{})
示例:
let a=[3,5,6,8,11,5,22,6];
a.sort((a,b)=>a-b); //返回[3, 5, 5, 6, 6, 8, 11, 22] 从小到大排序
console.log(a); //[3, 5, 5, 6, 6, 8, 11, 22] 原数组a改变
a.sort((a,b)=>b-a); //返回?[22, 11, 8, 6, 6, 5, 5, 3] 从大到小排序
console.log(a); //[22, 11, 8, 6, 6, 5, 5, 3] 原数组a改变
复制代码
常用的几个数学方法
Math.round()
作用:四舍五入
示例:
Math.round(7.6); //8
Math.round(7.4); //7
复制代码
Math.floor()
作用:向下取整
示例:
Math.floor(7.6); //7
Math.floor(7.4); //7
复制代码
Math.ceil()
作用:向上取整
示例:
Math.ceil(7.6); //8
Math.ceil(7.4); //8
复制代码
Math.pow()
作用:幂运算
示例:
Math.pow(2,4); //16 2*2*2*2
Math.round(3,0); //1
复制代码
Math.sqrt()
作用:开方
示例:
Math.sqrt(25); //5
Math.sqrt(81); //9
复制代码
Math.abs()
作用:取绝对值
示例:
Math.abs(7.6); //7.6
Math.abs(-7.4); //7.4
复制代码
Math.random()
作用:随机数 (取[0,1)之间的随机数,左闭右开区间)
示例:
//取x-y的随机数
Math.round(Math.random()*(y-x)+x);
复制代码