一. 添加/移除数组元素
1.简单方法
push
方法 —— 从数组尾端添加元素
let arr = [1,2,3]
arr.push(...[4,5])
console.log(arr) // [1,2,3,4,5]
pop
方法 —— 删除数组最后一个元素
let arr = [1,2,3]
arr.pop()
console.log(arr) // [1,2]
shift
方法 —— 删除数组首个元素
let arr = [1,2,3]
arr.shift()
console.log(arr) // [2,3]
unshift
方法 —— 从数组首端添加元素
let arr = [1,2,3]
arr.unshift(0)
console.log(arr) // [0,1,2,3]
slice
方法 —— 截取数组
let arr = [1,2,3]
let newArr = arr.slice(0,2)
console.log(newArr) // [1,2]
concat
方法 —— 创建一个新数组,其中包含来自于原数组、其他数组和其他项的值
let arr = [1,2,3]
let newArr = arr.concat([3, 4], 5, 6)
console.log(newArr) // [1,2,3,4,5,6]
2.复杂方法
splice
方法 —— 全面方法,可以添加,删除和插入元素
语法是:从索引 start 开始修改 arr,删除 deleteCount 个元素并在当前位置插入 elem1, ..., elemN。最后返回已处理完的数组
arr.splice(start, deleteCount, elem1, ..., elemN)
删除
let arr = [1, 2, 3]
arr.splice(1, 1) // 从索引 1 开始删除 1 个元素
console.log( arr ) // [1, 2]
替换
let arr = [1, 2, 3]
arr.splice(0, 2, -1, -2) // 从索引 0 开始删除 2 个元素,插入的-1和-2其中-1成为新的索引0
console.log( arr ) // [-1, -2, 3]
截取
let arr = [1, 2, 3]
let newArr = arr.splice(0, 2) // 从索引 0 开始删除 2 个元素,但是删除的元素被newArr截取
console.log( newArr ) // [1, 2]
插入
let arr = [1, 2, 5]
arr.splice(2, 0, 3, 4) // 从索引 2 开始删除 0 个元素,插入的3和4其中3成为新的索引2
console.log( arr ) // [1, 2, 3, 4, 5]
负索引
let arr = [1, 2, 5]
rr.splice(-1, 0, 3, 4) // 从索引 -1(倒数第二位) 开始删除 0 个元素,插入3和4
console.log( newArr ) // [1, 2, 3, 4, 5]
二. 遍历数组元素
forEach
方法 —— 为数组的每个元素都运行一个函数
let arr = ['a','b','c']
arr.forEach((item, index, array) => {
console.log(`对象是${item},索引是${index},原数组是${array}`);
});
// 对象是a,索引是0,原数组是a,b,c
.
.
for
方法 —— 为数组的每个元素都运行一个函数
let arr = ['a','b','c']
for (let item of arr) {
console.log( `对象是${item}` );
}
// 对象是a
.
.
三. 在数组中搜索
1.简单数组搜索方法
indexOf /lastIndexOf / includes
方法 —— 数组中进行搜索
语法是 a.从from索引开始搜索item,找到返回索引,找不到返回-1(从左往右)
b.从from索引开始搜索item,找到返回索引,找不到返回-1(从右往左)
c.从from索引开始搜索item,找到返回true,找不到返回false
a.arr.indexOf(item, from)
b.arr.lastIndexOf(item, from)
c.arr.includes(item, from)
let arr = ['a','b','c','d','a'];
let newArr1 = arr.indexOf('a') // 0
let newArr2 = arr.lastIndexOf('a') // 4
let newArr3 = arr.includes('a') // true
也可以在字符串中搜索
let arr = 'abcda;
let newArr1 = arr.indexOf('a') // 0
let newArr2 = arr.lastIndexOf('a') // 4
let newArr3 = arr.includes('a') // true
2.对象数组搜索方法
find
方法
一旦返回true,则停止搜索,返回item,故只能返回一个item,即第一个匹配的item。如果没有搜索到,则返回undefined
let arr =[
{id: 1, name: "张三"},
{id: 2, name: "李四"},
{id: 3, name: "王五"}
];
let user = arr.find((item, index, array)=> {
return item.id == 1
});
console.log(user.name) // 张三
filter
方法
一旦返回true,不会停止搜索,会返回所有匹配值组成的数组,即第一个匹配的item。如果没有搜索到,则返回undefined
let arr =[
{id: 1, name: "张三"},
{id: 2, name: "李四"},
{id: 3, name: "王五"}
];
let user = arr.find((item, index, array)=> {
return item.id < 3
});
console.log(user)
// [
{id: 1, name: "张三"},
{id: 2, name: "李四"}
]
四. 转换数组
map
方法 —— 它对数组的每个元素都调用函数,并返回结果新数组,但不会改变原数组
let arr = ['name','sex','class']
let newArr = arr.map((item, index, array) => {
return item.length
});
console.log(newArr) // [4,3,5]
sort
方法 —— 对数组进行排序
按照数字排序
let arr = [1,15,2]
arr.sort((a, b) => a - b)
console.log(arr) // [1,2,15]
按照字母排序
let arr = ['Österreich','Andorra','Vietnam']
arr.sort((a, b) => a.localeCompare(b));
console.log(arr) // ['Andorra','Österreich','Vietnam']
reverse
方法 —— 颠倒数组
let arr = [1, 2, 3]
arr.reverse()
console.log(arr) // [3,2,1]
split / join
方法 —— 数组 / 字符串互转
说简单一点就是字符串转数组 / 数组转字符串
let name = '张三, 李四, 王五'
let arr = name.split(', ')
console.log(arr) // ['张三', '李四', '王五']
let arr = ['张三', '李四', '王五']
let name = arr.join(', ')
console.log(name) // '张三, 李四, 王五'
reduce / reduceRight
方法 —— 数组相加
reduce语法:a第一次等于0,然后依次循环item相加(从左往右)
reduceRight语法:a第一次等于0,然后依次循环item相加(从右往左)
let arr = [1, 2, 3, 4, 5];
let newArr = arr.reduce((a, b) => a + b, 0);
console.log(newArr); // 15
Array.isArray
方法 —— 判断数据类型是不是数组
let arr = [];
let obj = {}
console.log(Array.isArray(arr)) // true
console.log(Array.isArray(obj)) // false