美文网首页
木易杨前端面试题第 43 题:使用 sort() 数组排序

木易杨前端面试题第 43 题:使用 sort() 数组排序

作者: 陆碌 | 来源:发表于2021-01-27 16:25 被阅读0次

    使用 sort() 对数组 [3, 15, 8, 29, 102, 22] 进行排序,输出结果

    [ 102, 15, 22, 29, 3, 8 ]

    我觉得对于一个js的方法,这里指数组方法,一般要记住以下几个方面

    • 参数,有几个,几个必选,几个可选,用途是什么
    • 返回值
    • 是否修改原有数组

    语法

    arrayObject.sort(sortby)

    参数

    sortby 可选。规定排序顺序。必须是函数。

    返回值 是否修改原有数组

    没有返回,直接修改原数组

    无参数怎么排序

    先把对象转成字符,再按照字符编码的顺序进行排序

    使用场景

    由小到大排序
    [3, 15, 8, 29, 102, 22].sort((a,b) => {return a - b});


    第 48 题:call 和 apply 的区别是什么,哪个性能更好一些

    1,call()、apply()、bind() 都是用来重定义 this 这个对象的!

    012704.png
    obj.myFun.call(db);    // 德玛年龄 99
    obj.myFun.apply(db);    // 德玛年龄 99
    obj.myFun.bind(db)();   // 德玛年龄 99
    

    以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!
    由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。

    2,对比call 、bind 、 apply 传参情况下

    012705.png
    obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99  来自 成都去往上海
    obj.myFun.apply(db,['成都','上海']);      // 德玛 年龄 99  来自 成都去往上海  
    obj.myFun.bind(db,'成都','上海')();       // 德玛 年龄 99  来自 成都去往上海
    obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99  来自 成都, 上海去往 undefined
    

    所以呢,区别就在于 参数 call是有一个写一个 而 apply是需要将参数打包成一个数组

    值得一提的是 call其实参数也可以是数组

    let params = [1,2,3,4]
    xx.call(obj, ...params)
    

    在有了es6之后 数组打开可以更加地方便

    相关文章

      网友评论

          本文标题:木易杨前端面试题第 43 题:使用 sort() 数组排序

          本文链接:https://www.haomeiwen.com/subject/dfvgzktx.html