数组的基本操作
创建数组
- 字面量创建
let arr = []
- new 一个数组
let arr = new Array()
数组常用方法
- isArray
let arr = []
let isArr = Array.isArray(arr)
console.log(isArr) // true
- instanceof
let istrue = arr instanceof Array
console.log(istrue); // true
- join()将数组转化为字符串,参数传分割符
let arr = [1,2,3,4,3,5]
console.log(arr.join('')); // 123435
console.log(arr.join(',')); // 1,2,3,4,3,5
数组增删改查操作
push向数组末尾添加一个元素,pop从数组末尾删除一个元素
unshift向数组头部添加一个元素,shift从数组头部删除一个元素
push方法末尾添加一个或多个元素
let arr = new Array()
arrL = arr.push(3,4,5,6) // 返回数组的长度
console.log(arr) // [3,4,5,6]
unshift方法 向数组的开头添加元素
let arrL1 = arr.unshift(1,2) // 返回数组长度
console.log(arr) // [1,2,3,4,5,6]
pop方法 删除数组最后一个元素
let arrL2 = arr.pop() // 返回删除的元素
shift方法 删除数组的第一个元素
let arrL3 = arr.shift() // 返回删除的元素
console.log(arrL3)
splice()方法可以进行删除操作,删除并新增操作
var arr = [1, 3, 4, 5];
arr.splice(1, 1); //从索引为1开始删除1个,
arr.splice(0, 2, "andy", "andi"); //从索引为0开始修改两个值;
arr.splice(1, 0, 6, 7); //从索引为1前面增加两个值
slice截取数组返回一个新数组,源数组不变,第一个参数是起始位置,第二个参数传结束索引,截取的是起始位置到结束索引之前的项
let arr = [1,2,3,4]
let newarr = arr.slice(1,2)
console.log(arr); //[ 1, 2, 3, 4 ]
console.log(newarr); //[ 2 ]
indexOf 根据字符返回索引,没有返回-1
let arr = [1,2,3,4]
console.log(arr.indexOf(2))
// 1
lastIndexOf 根据字符返回字符最后一项所在的索引位置
let arr = [1,2,3,4,3,5]
console.log(arr.lastIndexOf(3)); // 4
includes 判断数组是否包含某一项,返回布尔值
console.log(arr.includes(2))
// true
find 查询符合条件的一项或者从首部开始最先符合条件的一项
let newArr = arr.find((item,index) => {
return index > 1
})
console.log(newArr); // 2
findIndex 查询符合条件的一项的所在位置的索引或者从首部开始最先符合条件的一项的索引
let newarr = arr.findIndex((item,index) => {
return item == 2
})
console.log(newarr);
// 1
数组排序和翻转
// 默认升序排列
newArr.sort()
// 降序排列
newArr.sort(function(a,b) {
return b-a;
})
// 升序排列
newArr.sort(function(a,b) {
return a-b;
})
let arr = [1,2,3,4]
console.log(arr.reverse());
// [ 4, 3, 2, 1 ]
合并数组
- concat
let arr = [1,2,3]
let arr1 = [4,5,6]
let arr2 = [7,8,9]
let newarr = arr.concat(arr1)
// [1,2,3,4,5,6]
let newArr = arr.concat(arr1,arr2)
// [1,2,3,4,5,6,7,8,9]
- 扩展运算符
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = [...arr1, ...arr2];
console.log(arr3); // [1,2,3,4,5,6]
遍历数组
forEach普通遍历数组,并执行操作
let arr = [1,2,3,4,3,5]
let newarr = []
arr.forEach(item => {
newarr.push(item * 2)
})
console.log(newarr); // [ 2, 4, 6, 8, 6, 10 ]
filter过滤数组,返回符合条件的新数组
let arr = [1,2,3,4]
let newarr = arr.filter((item,index) => {
return item > 2
})
console.log(newarr);
// [3,4]
some判断数组内是否有符合条件的项,返回一个布尔值
let arr = [1,2,3,4]
let isHas = arr.some((item,index) => {
return item > 3
})
console.log(isHas); // true
every判断数组内是否全部符合某一条件,返回一个布尔值
let arr = [1,2,3,4]
let isEvery = arr.every((item,index) => {
return item > 3
})
console.log(isEvery); // false
let isEvery2 = arr.every((item,index) => {
return item > 0
})
console.log(isEvery2); // true
map计算数组项并返回新的值组成的数组
let arr = [1,2,3,4]
let newarr = arr.map((item,index) => {
return item * 2
})
console.log(newarr); // [ 2, 4, 6, 8 ]
reduce可以对数组里面的每一项执行计算并返回一个结果数值,函数有四个参数,分别是上次的执行结果,当前项,当前项索引,源数组
let arr = [1,2,3,4]
let newVal = arr.reduce((sum,curr,index,arr) => {
return sum + curr
})
console.log(newVal); // 10