返回新数组的方法
concat() 连接多个数组
let a = ['apple','banana','mango']; let b = ['pen','eraser']; let c = ['panda','cat']; let d = a.concat(b); // ['apple', 'banana', 'mango', 'pen', 'eraser'] // 注意顺序 let e = b.concat(a); // ['pen', 'eraser', 'apple', 'banana', 'mango'] // 可以连接多个数组 let f = b.concat(a,c); // ['pen', 'eraser', 'apple', 'banana', 'mango', 'panda', 'cat']
filter() 筛选符合要求的元素
参数: curValue ( 可选 : index arr )
let arr = [1, 2, 3, 4, 5, 6, 7, 8]; let res = arr.filter(curValue => curValue > 5); // 返回值大于5的 console.log(res); // [6, 7, 8]
map() 映射新数组
参数: curValue ( 可选 : index arr )
let arr = [1, 2, 3, 4]; let res = arr.map(curValue => curValue * 2); console.log(res); // [2,4,6,8]
slice() 截取
参数 : [ start , end ) 包前不包后
let arr = [1, 3, 6, 2, 0]; let res = arr.slice(1, 3); console.log(res); // [3, 6] 包前不包后 let arr = [1, 3, 6, 2, 0]; let res = arr.slice(0, 0); console.log(res); // [] let arr = [1, 3, 6, 2, 0]; let res = arr.slice(-3, -1); console.log(res); // [6, 2] let arr = [1, 3, 6, 2, 0]; let res = arr.slice(1); console.log(res); // [3, 6, 2, 0] let arr = [1, 3, 6, 2, 0]; let res = arr.slice(); console.log(res); // [1, 3, 6, 2, 0] 相当于不截取 直接返回原数组
改变原数组的方法
push() 末尾添加新项目,并返回数组新长度
let arr = [1, 2, 3, 4]; let res = arr.push(0); console.log(res, arr); // 5 [1, 2, 3, 4, 0]
unshift() 头部添加新项目,并返回数组新长度
let arr = [1, 2, 3, 4]; let res = arr.unshift(0); console.log(res, arr); // 5 [0, 1, 2, 3, 4]
pop() 移除数组的最后一项, 并返回该元素
let arr = [1, 2, 3, 4]; let res = arr.pop(); console.log(res, arr); // 4 [1,2,3]
shift() 移除数组的第一项, 并返回该元素
let arr = [1, 2, 3, 4]; let res = arr.shift(); console.log(res, arr); // 1 [2,3,4]
sort() 排序
!!!! 会改变原数组 !!!!
排序顺序可以是按字母或数字,也可以是升序(向上)或降序(向下)
默认情况下,
sort()
方法将按字母和升序将值作为字符串进行排序
let arr = [1, 3, 6, 2, 0]; arr.sort((a, b) => a - b); // [0, 1, 2, 3, 6] arr.sort((a, b) => b - a) // [6, 3, 2, 1, 0] arr.sort(); // [0, 1, 2, 3, 6] // 要进行字符串数字排序且 sort 不传递函数时, 会根据ASCII顺序排列, 可能与正确顺序会产生偏差 let arr = ['25', '100', '3', '40', '5']; arr.sort(); // ['100', '25', '3', '40', '5'] 因为 '2' 比 '1' 大 arr.sort((a, b) => a - b); // ['3', '5', '25', '40', '100'] arr.sort((a, b) => b - a); // ['100', '40', '25', '5', '3']
splice() 增添元素, 并返回被删除的元素
参数 : startIndex cutNum replaceEle
开始索引 截取个数 要替换的元素
let arr = [1, 3, 6, 2, 0]; let res = arr.splice(1, 3, 2222, 333); // 1: 开始索引 // 3: 截取个数 // 2222, 333: 要替换的元素 console.log(res, arr); // [3, 6, 2] [1, 2222, 333, 0] let arr = [1, 3, 6, 2, 0]; let res = arr.splice(1, 3); console.log(res, arr); // [3, 6, 2] [1, 0] // 只想要添加数据时, 第二个参数为 0 即可 let arr = [1, 3, 6, 2, 0]; let res = arr.splice(2, 0, 111); console.log(res, arr); // [] [1, 3, 111, 6, 2, 0] let arr = [1, 3, 6, 2, 0]; let res = arr.splice(2); // 只写一个参数表示截取的开始索引 console.log(res, arr); // [6, 2, 0] [1, 3]
其他
every() 是否符合要求
检查每个元素是否符合,每一项都符合返回 true , 有不符合的直接略过后面元素的验证返回 false
let arr = [1, 2, 3, 4, 5, 6, 7, 8]; let res1 = arr.every((curVal, index, arr) => curVal > 0); // 判断每一项是否都大于0 console.log(res1); // true let res2 = arr.every((curVal, index, arr) => curVal > 5); // 判断每一项是否都大于5 console.log(res2); // false
some() 是否符合要求
如果找到函数返回为 true 的数组元素,直接略过后面元素的验证返回true, 否则返回false
let arr = [1, 2, 3, 4]; let res = arr.some(item => item > 3) console.log(res); // true let arr1 = [1, 2, 3, 4]; let res1 = arr1.some(item => item < 0) console.log(res1); // false
includes() 确定数组是否包含指定的元素
let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.includes(4); console.log(res); // true // 第二个参数, 遍历起始的索引 let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.includes(4, 4); // 从索引4开始检索 console.log(res); // false
join() 将数组转化为字符串
默认分隔符为逗号
let arr = [1, 2, 4, 6, 7, 4]; let res = arr.join(); console.log(res); // 1,2,4,6,7,4 let arr = [1, 2, 4, 6, 7, 4]; let res = arr.join('-'); console.log(res); // 1-2-4-6-7-4 let arr = [1, 2, 4, 6, 7, 4]; let res = arr.join(''); console.log(res); // 124674
reduce() 累加
参数: pre cur ( 可选 : index arr )
let arr = [1, 2, 3, 4]; let res = arr.reduce((pre, cur) => { return pre + cur }, 0); // 别忘记写初始值 console.log(res); // 10
reverse() 反转
let arr = [1, 2, 3, 4]; let res = arr.reverse() console.log(res); // [4, 3, 2, 1]
find() 获取数组中第一个满足条件的元素的值
let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.find(item => item > 5); console.log(res); // 6
findIndex() 获取数组中第一个满足条件的元素的索引
let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.find(item => item > 5); console.log(res); // 4
indexOf() 判断是否含有指定元素
未找到返回 -1 , 找到了返回第一个满足条件的索引
let arr = [1, 2, 5, 4, 4, 4, 4]; let res = arr.indexOf(4); console.log(res); // 3 let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.indexOf(9); console.log(res); // -1 // 第二个参数, 遍历起始的索引 let arr = [4, 4, 4, 4, 4, 4, 4]; let res = arr.indexOf(4, 3); console.log(res); // 3 let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.indexOf(8, 3); // 从索引3开始检索 console.log(res); // 5
lastIndexOf() 从末尾开始检索是否含有指定元素
未找到返回 -1 , 找到了返回第一个满足条件的索引
搜索将从指定位置开始,如果未指定开始位置,则从末尾开始,并在数组的开头结束搜索
如果要搜索的项目不止一次出现,将返回最后一次出现的位置
// 遍历顺序 <---------------- let arr = [1, 2, 5, 4, 4, 4, 4]; let res = arr.lastIndexOf(4, x); // 从索引为 x 的位置向索引为 0 的顺序搜索 console.log(res); // x ---> res // 0 ---> -1 // 1 ---> -1 // 2 ---> -1 // 3 ---> 3 // 4 ---> 4 // 5 ---> 5 // 6 ---> 6 let arr1 = [1, 2, 5, 4, 6, 8, 0]; let res1 = arr1.lastIndexOf(9); console.log(res1); // -1 let arr2 = [4, 4, 4, 4]; let res2 = arr2.lastIndexOf(4, 1); console.log(res2); // 1 这个案例第二个参数写什么 res2就是什么 let arr3 = [1, 2, 5, 4, 6, 8, 0]; let res3 = arr3.lastIndexOf(8, 3); // 从索引3开始检索 console.log(res3); // -1
forEach() 遍历每一项
let arr = [1, 2, 5, 4, 6, 8, 0]; let res = arr.forEach((curVal, index, arr) => { // 1 0 [1, 2, 5, 4, 6, 8, 0] // 2 1 [1, 2, 5, 4, 6, 8, 0] // 5 2 [1, 2, 5, 4, 6, 8, 0] // 4 3 [1, 2, 5, 4, 6, 8, 0] // ... });
toString() 转换为字符串, 逗号分割
作用相当于
join(',')
let arr = [1, 2, 3, 4]; let res = arr.toString(); // 无参数 console.log(res); // 1,2,3,4
isArray() 检测是否为数组
let arr = [1,2,4];
let res = Array.isArray(arr);
console.log(res); // true
let a = 2;
let res = Array.isArray(a);
console.log(res); // false