var BetterListModel = function() {
this.allItems = ko.observableArray([
{ name: 'Denise' },
{ name: 'Charles' },
{ name: 'Bert' }
]); // Initial items
this.sortItemsAscending = function() {
this.allItems(this.allItems().sort(function(a, b) { return a.name > b.name;}));
};
this.sortItemsDescending = function() {
this.allItems(this.allItems().sort(function(a, b) { return a.name < b.name;}));
};
};
linee spiegato: weWiliChangeTheArrayToValue (weWilSortTheArrayWithASpecialFunction (ComparatorFunction))
ComparatorFunction vale a dire .
function(a, b) { return a.name < b.name;}
è una funzione speciale che aiuta la funzione di ordinamento a ... ordinamento.
Prende 2 argomenti e li confronta restituendo true se il primo argomento è "più grande" (dovrebbe essere più lontano nell'elenco) e false se il primo argomento è "minore"
Ogni algoritmo di ordinamento (quasi) funziona confrontando 2 elementi di raccolta differenziata fino a quando tutti sono in ordine.
Cambiare l'ordine è fatto facendo in modo che la funzione restituisce false quando sarebbe tornato vero normalmente - modo più semplice per farlo è cambiando il> operazione per <
EDIT una cosa: se si confronta non I caratteri ASCII usano return a.localCompare (b); (E tornare b.localCompare (a);) e quando si tratta di numeri uso "-" cantare quindi è un'operazione aritmetica
EDIT2
Attenzione il metodo di cui sopra ">" potrebbe rompere con i duplicati in serie utilizzare
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
invece (o solo localCompare)
fonte
2013-07-18 14:23:56
può per favore edita si risponde per l'ordinamento ascendente e discendente? Sono confuso cosa sono a e b? – Ahmed
'a' e 'b' non sono variabili che si utilizzano nell'applicazione, quelle sono in realtà alcune variabili casuali dalla funzione di ordinamento, perché le funzioni di ordinamento devono ricevere 2 parametri per l'ordinamento di 2 elementi, giusto? :) – dpaul1994
È generalmente accettato in SO che tu spieghi il tuo esempio di codice e non fornisca solo una copia e incolla la risposta. Questo aiuta i futuri utenti che arrivano qui alla ricerca di ulteriori informazioni su questo argomento. –