我想知道如何创建一个自定义的sortOn函数,与某种排序优先级。我有一个更复杂的情况,但我主要想知道如何构建漂亮的排序函数。sortOn功能与优先
可以说我有这个无序列表与数据对象:
var myList = [
{drink: {amount: 1, name: "cola"}},
{drink: {amount: 5, name: "beer"}},
{food: {amount: 7, name: "cake"}},
{drink: {amount: 3, name: "fanta"}},
{drink: {amount: 4, name: "tea}},
{other: {amount: 1, name: "table"}},
{food: {amount: 4, name: "mars"}},
{food: {amount: 5, name: "pizza"}},
{food: {amount: 4, name: "cake"}},
{other: {amount: 12, name: "chair"}},
{food: {amount: 14, name: "chips"}},
{drink: {amount: 6, name: "coffee}},
{food: {amount: 8, name: "chips"}},
{food: {amount: 6, name: "pizza"}},
{food: {amount: 1, name: "food"}}
]
好,成像我想排序使用这些规则:
first: sort in this order: food, drinks, others (note, thats not alphabetical)
then: sort on amount, BUT on food, pizza's + cakes must be on top
在理想情况下,它看起来像这样(手动创建):
var myList = [
{food: {amount: 5, name: "pizza"}},
{food: {amount: 6, name: "pizza"}},
{food: {amount: 4, name: "cake"}},
{food: {amount: 7, name: "cake"}},
{food: {amount: 1, name: "food"}},
{food: {amount: 4, name: "mars"}},
{food: {amount: 8, name: "chips"}},
{food: {amount: 14, name: "chips"}},
{drink: {amount: 1, name: "cola"}},
{drink: {amount: 3, name: "fanta"}},
{drink: {amount: 4, name: "tea}},
{drink: {amount: 5, name: "beer"}},
{drink: {amount: 6, name: "coffee}},
{other: {amount: 1, name: "table"}},
{other: {amount: 12, name: "chair"}}
]
再次,这完全不是一个现实世界的例子,但我有案件(前夕n更深的嵌套对象)我想要应用这样的规则。
是否有可能创建一些排序顺序查找列表(类似这样的),还是不可行?
priorityList = [
food:[
name:["pizza", "tea", rest],
amount: Array.ASCENDING}
],
drink,
other
]; // etc..
我想学习如何制作这样的排序功能。我喜欢看到一个Javascript或ActionScript的解决方案,但其他语言来说明也没关系。有这样的图书馆吗?我是否必须遍历所有项目,创建条件,在案例中推/不移或者是否可以使用自定义sort()
函数?我需要一些指导如何以实用/有效的方式解决这个问题。
在此先感谢!
['sort()'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort)函数采用比较器参数。这是一个比较列表中两个元素的函数,sort()然后完成剩下的部分。 – millimoose
@ ajax333221我修好了可乐,那是一个错字。 –