我正在尝试根据外部对象中键的外观对对象列表进行排序。由于某些原因,我无法对数组进行排序,我尝试使用lodash或其他方法。
下面是一个更简单的例子:
arr = [1, 2, 3, 4, 5, 6]
obj = { 4: true, 6: true }
arr.sort((a, b) => obj[a] - obj[b])
// [1, 2, 3, 4, 5, 6]
我希望真值在前面,如[4, 6, 1, 2, 3, 5]
为什么这个不行?
不能减去true
和undefined
(这是不存在的键的值)
> arr.sort((a, b) => (obj[b] || 0) - (obj[a] || 0))
(6) [4, 6, 1, 2, 3, 5]
可以代替(即强制undefined
为零)。