6-sort方法注意事项

89 阅读1分钟

浅谈sort()遇到的坑

  • 需求:对const定义的数组变量进行排序。(拓展:const定义的数组变量是不可以变重新赋值和不可以删除(splice,unshift)添加(push)属性,但是可以对其进行排序sort,具体请查阅其他网上资料,主要是链接忘记保存了。哈哈)

    //对象数组根据orderNum属性进行排序
    const asyncRoutes=[{...},{...}]
     asyncRoutes.sort((a, b) => {
     	return a.orderNum - b.orderNum
     })
    
  • 遇到的坑:

    • 部分浏览器出现调用sort方法但是没有进行排序的问题,查其原因是因为我遍历的对象数组中需要依照的orderNum属性有undefined(拓展:普通的非对象数组,含undefined的会排序在最后,例如[1,undefined,4,2,undefined).sort((a,b)=>a-b),输出为[1,2,4,undefined,undefined])。

    • 解决办法:(1)对数组进行筛选过滤掉ordderNum是undefined的元素。然后再sort排序。我的解决:因为变量为const,如果过滤就是使用splice方法,而对const变量使用该方法会报错。所以可以对原数组进行JSON转换后,然后使用的时候就使用该新的对象。

      let newArr=JSON.parse(JSON.stringify(asyncRoutes))