一道js算法题

设计一个function sort() 实现数字正序排序 如:

举例  数组结构:数组 a
[
    {
        aaa : { bbb : 243},
        ccc : { ddd : 234}
    },
    {
        aaa : { bbb : 475},
        ccc : { ddd : 255}
    },
    ....
]

通过调用 sort(a, 'aaa.bbb')修改数组 实现指定元素正序排序


[
    {
        aaa : { bbb : 234},
        ccc : { ddd : 23423489}
    },
    {
        aaa : { bbb : 457},
        ccc : { ddd : 23423489}
    },
    ....
]

sort 函数 接受两个参数 一个为数组,另一个参数 不定('aaa'或者'ccc'或者'ccc.ddd'都有可能)

阅读 1.2k
1 个回答

关键点在于取到用于比较大小的那个值。

function sort (list, key) {
  let keyList = key.split('.')
  list.sort((a, b) => {
    let valueA = a, valueB = b
    for (let k of keyList) {
      if (typeof valueA != 'object' && typeof valueB != 'object') break
      valueA = valueA[k]
      valueB = valueB[k]
    }
    return valueA - valueB
  })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题