pusgh() 添加数组
1. push方法 返回添加后的数组的长度
let arr = [1,2,3,4,5]
console.log(arr.push(5)) // 6
console.log(arr) // [1,2,3,4,5,5]
unshift() 添加数组
2.unshift()从前面添加元素, 返回值是添加完后的数组的长度
let arr = [1,2,3,4,5]
console.log(arr.unshift(2)) // 6
console.log(arr) //[2,1,2,3,4,5]
- 一 总结pusgh()跟unshift()都是添加数组,同时也都返回添加后的长度。区别在于pusgh添加到数组后面unshift添加到数组前面
pop() 删除数组
3.pop 从数组后删除,且只能删除一个, 返回值为删除后的的元素
let arr = [1,2,3,4,5]
console.log(arr.pop()) // 5
console.log(arr) //[1,2,3,4]
shift() 删除数组
4.pop 从数组前删除,且只能删除一个, 返回值为删除后的的元素
let arr = [1,2,3,4,5]
console.log(arr.shift()) // 1
console.log(arr) // [2,3,4,5]·
splice(i,n) 删除指定元素
5.删除从i(索引值)开始之后的n个元素。返回值是删除的元素
let arr = [1,2,3,4,5]
console.log(arr.splice(2,2)) //[3,4]
console.log(arr) // [1,2,5]
根据splice可借题发挥 删除对象数组中的某一项 例如:找到以下数组 找到id为2的对象,并且删除它
const array = [
{ id: 1, name: '张三' },
{ id: 2, name: '张四' },
{ id: 3, name: '张五' },
];
array.splice(
array.findIndex((item) => item.id == 2),
1,
);
console.log(array); //[ { id: 1, name: '张三' }, { id: 3, name: '张五' },]
总结:二 1.p 跟 shift 都是删除数组并且都智能删除一个 pop是删除前面的value ,shift 删除的则是后面的
2 shplice 删除数组,可以删除多个shplice (i,n) 删除从定i个元素开始后面的n个元素
concat() 连接/合并数组
6.接两个数组 返回值为连接后的新数组, 不改变原数组的值
let arr = [1,2,3,4,5]
console.log(arr.concat([1,2])) // [1,2,3,4,5,1,2]
console.log(arr) // [1,2,3,4,5]
split() 字符串转数组
7.将字符串转化为数组
let str = '123456'
console.log(str.split('')) // ["1", "2", "3", "4", "5", "6"]
sort() 排序
8.将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的
let arr = [2,10,6,1,4,22,3]
console.log(arr.sort()) // [1, 10, 2, 22, 3, 4, 6]
8.2我们可以设置数组从小到大排序
let arr1 = arr.sort((a, b) =>a - b)
console.log(arr1) // [1, 2, 3, 4, 6, 10, 22]
8.3我们可以设置数组从大到小排序
let arr2 = arr.sort((a, b) =>b-a)
console.log(arr2) // [22, 10, 6, 4, 3, 2, 1]
reverse() 反转
9. 数组进行反转 返回值是 反转后的数组,同时会改变原数组
let arr = [1,2,3,4,5]
console.log(arr.reverse()) // [5,4,3,2,1]
console.log(arr) // [5,4,3,2,1]
slice() 切割数组
10.切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
let arr = [1,2,3,4,5]
console.log(arr.slice(1,3)) // [2,3]
console.log(arr) // [1,2,3,4,5]
forEach() 遍历数组
11.遍历数组,无return **即使有return,也不会返回任何值,并且会影响原来的数组 value:当前数组, index:索引 , array:原数组
- forEach() 为异步函数
- forEach() 为异步函数
- forEach() 为异步函数
- 重要的事情说3遍
let arr = [1,2,3,4,5]
arr.forEach( (value,index,array)=>{
console.log(`value:${value} index:${index} array:${array}`)
})
// value:1 index:0 array:1,2,3,4,5
// value:2 index:1 array:1,2,3,4,5
// value:3 index:2 array:1,2,3,4,5
// value:4 index:3 array:1,2,3,4,5
// value:5 index:4 array:1,2,3,4,5
为了验证foreach 的异步 这里也举个例子
let arr = [1,2,3,4,5]
arr.forEach( (value,index,array)=>{
value = value * 2
})
console.log(arr) [1, 2, 3, 4, 5]
这里我们期待的是能每个值X5 得到 [5,10...],但是有由于foreach的异步我们并没有成功,控制台还是给我打印了 [1, 2, 3, 4, 5], 所以要想得到改变的数组foreach这里就不适合了!
map(callback) 映射遍历数组
12. map也是遍历数组,并且有返回值,返回值为一个新的数组。
var arr1 = [1,2,3,4];
var res1 = arr1.map((item,index,arr)=>{
item = item * 3;
return item;
})
console.log(arr1); // [1,2,3,4]
console.log(res1); // [3,6,9,12]
所以接上面例子我们不难看出map跟forEach的区别了!
filter(callback) 过滤查找
13 过滤/查找数组,返回一个满足要求的数组,不改变原数组
let arr = [1,2,3,4,5]
let arr1 = arr.filter( (value, index) => value<3)
console.log(arr1) // [1, 2]
every(callback):Boolean 查找
14 判断条件,数组的元素是否全满足,若满足则返回ture
let arr = [1,2,3,4,5]
let arr1 = arr.every( (value, index) =>value<3)
console.log(arr1) // false
let arr2 = arr.every( (value, index) =>value<6)
console.log(arr2) // true
some(callback):Boolean 查找
15 依据判断条件,数组的元素是否有一个满足,若有一个满足则返回 true
let arr = [1,2,3,4,5]
let arr1 = arr.every( (value, index) =>value<3)
console.log(arr1) // false
let arr2 = arr.every( (value, index) =>value<6)
console.log(arr2) // true
reduce(callback) 累加/计算
16 迭代数组的所有项,累加器,数组中的每个值(从左到右)合并,最终计算为一个值
callback:
previousValue 必选 --上一次调用回调返回的值,或者是提供的初始值(initialValue)
currentValue 必选 --数组中当前被处理的数组项
index 可选 --当前数组项在数组中的索引值
array 可选 --原数组
initialValue: 可选 --初始值
let arr = [0,1,2,3,4]
let arr1 = arr.reduce((preValue, curValue) =>
preValue + curValue
)
console.log(arr1) // 10