箭头函数与普通函数区别
- 箭头函数没有自己的this,this依赖以上级;不能改变this(因为没有自己的this)。
- 箭头函数不能new,由于(1)本身没有this,(2)没有prototype
- 箭头函数没有arguments(类数组),但可用扩展运算符接收参数(...arg)
- 写法更简洁
function fn(){
console.log(this) // Window
console.log(arguments)
}
fn(2,91,9)
// 箭头函数
let fnc = (...arg)=>{
console.log(this) // Window
console.log(arg)
}
fnc(8,29,100)
数组相关
改变原始数组:
shif:从数组中删除第一个元素,然后返回该元素
let arr = [1,27,89,1,9].shift() // 1
unshift:法将一个或多个项追加到数组的开头,返回数组的新长度(改变原始数组)
let arr = [1,27,89,1,9].unshift(100) // 6
pop:法从数组中删除最后一个元素,然后返回该元素
let arr = [1,27,89,1,9].shift() // 9
reverse:数组的反转顺序
let arr = [1,27,89,1,9].reverse() // [9, 1, 89, 27, 1]
sort:对数组的元素进行排序
let arr = [1,27,89,1,9].sort() // [1, 1, 27, 89, 9] 注:没按照值的大小排序
splice:从数组中删除元素,并插入新的元素
let arr = [1,27,89,1,9].splice(1,3) //[27, 89, 1]
push:将一个或多个项追加到数组的末尾,并返回新的长度
let arr = [1,27,89,1,9].push(100) //6
不改变原始数组
slice:选取数组的的一部分,并返回一个新数组
[1,27,89,1,9].slice(1,3) // [27, 89]
concat:将一个或多个数组连接到原始数组
[1,27,89,1,9].concat(1,3) // [1, 27, 89, 1, 9, 1, 3]
join:数组转换字符串
[1,27,89,1,9].join() // "1,27,89,1,9"
map:法通过在每个数组项上使用callback调用结果来创建一个新数组
[1,27,89,1,9].map(function(a){
return a+1
})
// [2, 28, 90, 2, 10]
filter:创建一个新数组, 其包含通过所提供函数实现的测试的所有元素
[1,27,89,1,9].filter(function(a){
return a%3==0
})
// [27, 9]
map与forEach
let arrs = [1,8,19,29,10]
arrs.forEach(function(val,index,arr){
console.log(val,index,arr)
})
console.log('map----------------')
arrs.map(function(val,index,arr){
console.log(val,index,arr)
})
参数一:当前数组中元素;参数二:索引; 参数三:当前数组
区别:
forEach()返回值是undefined,不可以链式调用
map()返回一个新数组,原数组不会改变
没有办法终止或者跳出forEach()循环,除非抛出异常
注意:当数组中元素是值类型,map不会改变原数组;当是引用类型,则可以改变原数组
let marr =[
{
name: 'aaa',
id: 10
},
{
name: 'bbb',
id: 20
}
]
let arr1 = marr.map(function(val,index,arr){
val.id = 1
return val
})
console.log(arr1,marr)
输出:[{"name":"aaa","id":1},{"name":"bbb","id":1}] //改变了原始数组
如果是要不改变
let arr1 = marr.map(item => (
{
...item,
id: 6
}
))
console.log(arr1, marr)
[{"name":"aaa","id":1},{"name":"bbb","id":1}]
[{"name":"aaa","id":10},{"name":"bbb","id":20}]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。