-
数组的新增
push()
方法:可向数组的末尾添加一个或多个元素,并返回新的长度,使用该方法会改变原数组。
let arr = [1, 2, 3]
let arrLength = arr.push(4)
console.log(arr) //[1, 2, 3, 4]
console.log(arrLength) //4
unshift()
方法:可向数组的开头添加一个或更多元素,并返回新的长度,使用该方法会改变原数组。
let arr = [1, 2, 3]
let arrLength = arr.unshift(4)
console.log(arr) //[4, 1, 2, 3]
console.log(arrLength) //4
concat()
方法:用于连接两个或多个数组。该方法不会改变现有的数组。
let arr1 = [1, 2, 3, 4, 5]
let arr2 = [1, 2, 3];
let arr3 = arr1.concat(arr2)
console.log(arr1);//[1, 2, 3, 4, 5]
console.log(arr2);//[1, 2, 3]
console.log(arr3);//[1, 2, 3, 4, 5, 1, 2, 3]
splice()
方法:向数组插入和替换改变原数组。
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.splice(2,0,"a","b")
console.log(arr1);//[1, 2, "a", "b", 3, 4, 5]
console.log(arr2);//[]
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.splice(2,2,"a","b")
console.log(arr1);//[1, 2, "a", "b", 5]
console.log(arr2);//[3, 4]
-
数组的删除
pop()
方法:删除数组的最后一个元素并返回被删除的元素,使用该方法会改变原数组。
let arr = [1, 2, 3, 4, 5]
let arrValue = arr.pop()
console.log(arr) // [1, 2, 3, 4]
console.log(arrValue) //5
shift()
方法:把数组的第一个元素从其中删除,并返回第一个元素的值,使用该方法会改变原数组。
let arr = [1, 2, 3, 4, 5]
let arrValue= arr.shift()
console.log(arr) // [2, 3, 4, 5]
console.log(arrValue) //1
slice()
方法:从已有的数组中返回选定的元素。这里要注意:使用 slice() 会返回一个新的数组而不是修改原数组。
1、不传参
let arr = [1, 2, 3, 4, 5]
let newArr = arr.slice()
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newArr) // [1, 2, 3, 4, 5]
2、传入一个参数且为正值:将原数组从下标为传递的参数值开始一直截取到最后。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.slice(1)
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newArr) // [2, 3, 4, 5]
3、传入一个参数且为负值:此时将截取原数组末尾的元素,传递的参数为多少,就在后面截取多少个。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.slice(-2)
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newArr) // [4, 5]
4、传入两个参数:第一个参数为数组切割的起始值,第二个参数为数组切割的结束值。注:包头不包尾。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.slice(1, 4)
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newArr) // [2, 3, 4]
splice()
方法:向/从数组中添加/删除项目,然后返回被删除的项目。
1、不传参:自身返回一个空数组,原数组不改变。官方规定第一个参数和第二个参数为必传项。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice()
console.log(arr) // [1, 2, 3, 4, 5]
console.log(newArr) // []
2、传一个参数:第一个参数后面的元素全部删除。该方法会改变原数组。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(1)
console.log(arr) // [1]
console.log(newArr) // [ 2, 3, 4, 5]
3、传入一个参数且为负值:此时将删除原数组末尾的元素,传递的参数为多少,就在后面删除多少个。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(-2)
console.log(arr) // [1, 2, 3]
console.log(newArr) // [4, 5]
4、传入两个参数:第一个参数为数组删除的起始值,第二个参数为数组删除的位数。
let arr = [1, 2, 3, 4, 5]
let newArr = arr.splice(0, 2)
console.log(arr) // [3, 4, 5]
console.log(newArr) // [1, 2]
splice():进行的操作会影响到原数组
slice():进行的操作不会影响到原数组
-
数组的循环
filter()
方法:对数组的每一项允许给定函数,返回该函数会返回true
的项组成数组,不会改变原数组。
写法一
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.filter((item) => item > 3)
console.log(arr1)// [1, 2, 3, 4, 5]
console.log(arr2)// [4, 5]
写法二
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.filter((item) =>{
return item > 3
})
console.log(arr1)// [1, 2, 3, 4, 5]
console.log(arr2)// [4, 5]
map()
方法:对数组的每一项执行给定函数,返回每次函数调用的结果组成的数组,不会改变原数组。
注:map()
不会对空数组进行检测
写法一
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.map((item) => item > 3)
console.log(arr1)// [1, 2, 3, 4, 5]
console.log(arr2)// [false, false, false, true, true]
let arr1 = [{
a: 1,
b: 2
}, {
a: 3,
b: 4
}, {
a: 5,
b: 6
}]
let arr2 = arr1.map((item) => item['a'])
console.log(arr1)//[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]
console.log(arr2)//[1, 3, 5]
写法二
let arr1 = [1, 2, 3, 4, 5]
let arr2 = arr1.map((item) =>{
return item > 3
})
console.log(arr1)// [1, 2, 3, 4, 5]
console.log(arr2)// [false, false, false, true, true]
let arr1 = [{
a: 1,
b: 2
}, {
a: 3,
b: 4
}, {
a: 5,
b: 6
}]
let arr2 = arr1.map((item) =>{
return item['a']
})
console.log(arr1)//[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]
console.log(arr2)//[1, 3, 5]
forEach()
方法:对数组的每一项运行给定函数,没有返回新数组,没有返回值。
注:forEach()
无法在所有元素都传递给调用的函数之前终止遍历,forEach()
中break
、return
无效,使用for
替换forEach()
。
let arr = [1, 2, 3, 4]
arr.forEach((item) => {
console.log(item)
})
//1
//2
//3
//5
普通for
循环(性能较好)
let arr = [1, 2, 3, 4]
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
//1
//2
//3
//5
关于
for
循环的终止循环:
break
:终止循环执行循环体下面的代码
return
:终止循环并且退出循环所在的方法
continue
:终止当前循环,进行下一次循环
for...in
以任意顺序遍历一个对象的可枚举属性。for...in
循环出的是key
,遍历数组元素的顺序可能是随机的。
let arr = [1,2,3,4,5]
for (let index in arr){
console.log(index)
}
//0
//1
//2
//3
//4
for...of
循环,for...of
循环出的是value
。支持遍历字符串。
let arr = [1,2,3,4,5]
for (let item of arr){
console.log(item)
}
//1
//2
//3
//4
//5
let str = "hello"
for (let item of str){
console.log(item)
}
//h
//e
//l
//l
//o
-
数组的排序
reverse()
方法:用于颠倒数组中元素的顺序。
let arr = [1, 2, 3, 4, 5]
arr.reverse()
console.log(arr)//[5, 4, 3, 2, 1]
sort()
方法:用于对数组的元素进行排序,并返回数组。
//实现升序
let arr = [5, 1, 3, 4, 2];
arr.sort(function(a, b) {
return a - b;
})
console.log(arr);//[1, 2, 3, 4, 5]
//实现降序
let arr2 = [5, 1, 3, 4, 2];
arr2.sort(function(a, b) {
return b - a;
})
console.log(arr2);//[5, 4, 3, 2, 1]
-
检测数组
let arr1 = [1, 2, 3, 4, 5];
let arr2 = "123456"
console.log(arr1 instanceof Array) // true
console.log(arr2 instanceof Array) // false
console.log(Array.isArray(arr1)) // true
console.log(Array.isArray(arr2)) // false