JavaScript基于外部对象排序



我正在尝试根据外部对象中键的外观对对象列表进行排序。由于某些原因,我无法对数组进行排序,我尝试使用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]

为什么这个不行?

不能减去trueundefined(这是不存在的键的值)

> arr.sort((a, b) => (obj[b] || 0) - (obj[a] || 0))
(6) [4, 6, 1, 2, 3, 5]

可以代替(即强制undefined为零)。

最新更新