ある種のソート優先度を使用して、カスタムの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"}}
]
繰り返しになりますが、これは実際の例ではありませんが、そのようなルールを適用したい場合があります(さらに深いネストされたオブジェクト)。
ソート順のルックアップリスト(このようなもの)を作成することは可能でしょうか、それとも実現可能ではありませんか?
priorityList = [
food:[
name:["pizza", "tea", rest],
amount: Array.ASCENDING}
],
drink,
other
]; // etc..
このようなソート関数の作り方を学びたいです。私はJavascriptまたはActionscriptソリューションを見るのが大好きですが、説明する他の言語も大丈夫です。このためのライブラリはありますか?すべてのアイテムをループし、条件を作成し、場合によってはプッシュ/シフト解除する必要がありますか、それともカスタムsort()
関数でこれが可能ですか?これを実用的/効率的な方法で解決する方法について、いくつかの指示が必要です。
前もって感謝します!