Javascript domanda implementazione: come rendere questi valori di visualizzazione delle funzioni

StackOverflow https://stackoverflow.com/questions/3497953

Domanda

Vi prego di scusarmi, ma so js principi fondamentali e come scrivere / chiamare una funzione di base, ma in questo caso sto cercando di abbinare un alfa elenco di categorie dal DB a partita contro il mio set (non ordinato alfa) ordine di tali categorie, come specificato di seguito (questo codice è suggerito per l'uso da un altro utente su una questione ho chiesto come mappare l'ordine delle categorie viene restituito). Tuttavia, non riesco a capire come integrare la risposta di codice di quella persona nel mio codice.

Basta vederlo implementato contro un altro elenco esempio (per imitare quello che vorrei prendere dal DB) e come io lo definirei in una dichiarazione caso interruttore di avvolgere la mia html intorno i nomi delle categorie e li tornare alla pagina web nella Per mappato Voglio aiuterebbe molto. Scusate se si scopre di essere ovvio. Sto cercando di imparare quello che posso, come ho incontrato questi problemi. Grazie!

var categories = [ 'F', 'C', 'A1', 'A2', 'A3' ].map(function (category) {
    return businesses.filter(function (business) {
        return business.category === category;
    });
});
È stato utile?

Soluzione

Il codice dato look più probabilità di essere utilizzando la libreria jQuery JavaScript che ha alcune funzioni utili come map() per la manipolazione di array.

Il codice presuppone che si dispone di un oggetto jQuery / array, businesses che contiene le attività che avete bisogno di ordine. Se lo leggiamo dall'esterno verso l'interno

  1. passare ogni elemento dell'array a sua volta in funzione mappa. La funzione di carta prende una funzione per dire come ogni elemento deve essere mappato.
  2. La funzione function (category)... anonima accetta un argomento, quel particolare oggetto passato a in questa iterazione e restituirà il risultato della mappatura.
  3. il risultato restituito è una funzione di chiamare filtro su businesses e passando una funzione per dire quanto le aziende devono essere filtrati.
  4. La funzione function (business)... anonima accetta un argomento, quel particolare oggetto passato ad esso come businesses viene iterato e ritorna quelli che corrispondono l'argomento categoria ambito nella funzione esterna.
  5. Il risultato finale è un array di oggetti ordinato dal [ 'F', 'C', 'A1', 'A2', 'A3' ] categoria array

Se torniamo al problema originale , è necessario ordinare un elenco di categorie in base alle preferenze del cliente. Creiamo un letterale di un oggetto per mappare l'ordinamento

var map = {
    F : 5,
    C : 3,
    A1 : 1,
    A2 : 4,
    A3 : 2
}

Possiamo usare questa mappa per ordinare l'array usando il metodo sort

var array = ['F', 'C', 'A1', 'A2', 'A3'];

array.sort(function(a,b) {
    return map[a] - map[b];
});

Ciò restituisce noi ["A1", "A3", "C", "A2", "F"]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top