箭头函数与普通函数区别

  • 箭头函数没有自己的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}]

码厨
27 声望5 粉丝

学无止境...