我有一个像这样的对象数组:
var myArray = [{name: 'John', sortItem: 'abra'}, {name: 'Doe', sortItem: 'cadabra'}]
一些给定的约束:
然后我使用sortBy(myArray, 'sortItem')
对其进行排序(sortBy
来自lodash)。
现在我想添加一个默认选项,我想确保它在排序后始终是第一个选项。所以我尝试了一些选择:
var myList = ['a', 'A', 0]; _.sortBy(myList)
会产生["A", "a", 0]
var myList = ['a', 'A', '_']; _.sortBy(myList)
会产生["A", "_", "a"]
var myList = ['a', 'A', '.']; _.sortBy(myList)
会产生[".", "A", "a"]
var myList = ['a', 'A', '']; _.sortBy(myList)
会产生["", "A", "a"]
似乎我现在最好的选择是添加{name: 'Default', sodtItem: ''}
,但还有另一个字符/值可以确保我的默认项目是第一个吗?
问题不在于如何构建排序功能;但相反,哪个角色的价值最低""在Javascript?
换句话说,如果你列出所有可能的字符(那些通过jsonification的字符)并对它们进行排序 - 那么第一个字符是什么?
答案 0 :(得分:1)
您可以添加另一个排序字段,它将确定主要顺序,“sortItem”将是您的次要排序。
所以你的排序看起来像是:
_.sortBy(myArray, ['default', 'sortItem'])
你的阵列看起来像:
var myArray = [
{name: 'John', sortItem: 'abra'},
{name: 'Doe', sortItem: 'cadabra'},
{name: 'This is the default', sortItem: 'zzzzz', default: true}
];