浅谈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))
-