Ordinare un array in base al tempo

di il
12 risposte

Ordinare un array in base al tempo

Ciao,

Vorrei ordinare in ordine descendente un array di oggetti contenenti urls:
[ {urls : ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"]}]

L'ordine va in base al tempo che viene specificato nel nome del file .
Ho provato modi differenti ma senza successo, se mi potete aiutare sarei molto felice

12 Risposte

  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    Ho provato modi differenti ma senza successo [...]
    Posta il codice, così esaminiamo i motivi dell'insuccesso.
  • Re: Ordinare un array in base al tempo

    Var urls [ {urls : ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"]}];
    var getVal = str => str.split('_')[2];
    urls.sort((a, b) => getVal(a) - getVal(b));

    Ecco il codice, scusatemi
  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    Var urls [ {urls : ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"]}];
    Questa dichiarazione sintatticamente te la accetta?
    Dubito che sia giusta.
  • Re: Ordinare un array in base al tempo

    Ops mi sono dimenticato = e la maiuscola del var
  • Re: Ordinare un array in base al tempo

    Quindi come posso fare per risolvere il problema?
  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    Quindi come posso fare per risolvere il problema?
    Quindi qual è il codice finale?
    Qual è l'errore?
  • Re: Ordinare un array in base al tempo

    Codice finale:

    var urls = [ {urls : ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"]}];
    var getVal = str => str.split('_')[2];
    urls.sort((a, b) => getVal(a) - getVal(b));

    L'errore è che non mi ordina i dati in modo decrescente
  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    var urls = [ {urls : ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"]}];
    Ma perché un array di oggetto che contiene "urls" e con dentro un altro "urls"?

    Non è sufficiente
    var urls = ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"];
    per creare l'array di stringhe che devi manipolare dopo?
  • Re: Ordinare un array in base al tempo

    Si in effetti hai ragione, quindi il codice finale è questo:
    var urls = ["site.com/abc123_17:16:11.png","site.com/abc12345_17:12:22.png","site.com/abc12345678_17:06:33.png"];
    var getVal = str => str.split('_')[2];
    urls.sort((a, b) => getVal(a) - getVal(b));

    che comunque continua a non andare....
  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    Si in effetti hai ragione, quindi il codice finale è questo:
    [...]
    che comunque continua a non andare....
    Ok, ma prova a scomporre il problema: verifica cosa ti viene restituito con lo split(), controlla il valore di ritorno delle funzioni getXXX() che hai scritto, fai qualcosa per avanzare nell'analisi della problematica e aggiungere nuovi dettagli.

    Non puoi stare lì, fermo, in attesa che guardando il codice si risolva il problema da solo, o che qualcuno lo scriva per te.

    O meglio, puoi anche farlo, ma non è nello spirito del forum delegare ad altri la risoluzione del problema: chiedere una mano è un conto, aspettare sempre l'imbeccata senza fare prima il possibile per cercare di capire dov'è il problema invece no.
  • Re: Ordinare un array in base al tempo

    hamon ha scritto:


    che comunque continua a non andare....
    Ad esempio, controlla l'elemento a cui accedi dopo la funzione : se leggi la documentazione, scoprirai che gli elementi divisi della stringa sono numerati da 0 e non da 1, trattandosi di un array, quindi nel caso di una coppia di elementi gli indici sono 0 e 1 (se scrivi 2 vai ovviamente fuori dal range).

    In secondo luogo, non puoi sottrarre delle stringhe (che sono il valore di ritorno delle tue funzioni) in quel modo: prendi spunto dagli esempi che trovi nella documentazione di ... in fondo alla pagina ce n'è proprio uno che usa dei nomi e che fa al caso tuo.

    Testa le funzioni separatamente fino a quando non danno il risultato sperato: solo dopo puoi combinarle per lo scenario più ampio.

    Ciao!
  • Re: Ordinare un array in base al tempo

    Grazie mille per le dritte Alka, ho posto male la mia richiesta e non volevo delegare niente a nessuno ma solo un aiuto. Domani provo quanto mi hai detto e se non ci riesco posterò.

    Ciao
Devi accedere o registrarti per scrivere nel forum
12 risposte