Ordinare un array in base al tempo

di
Anonimizzato30475
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