php
  • javascript
  • list
  • explode
  • 2012-12-01 13 views 5 likes 
    5

    Eventuali duplicati:
    Javascript equivalent of PHP’s list()PHP equivalente di lista ed esplodere in javascript

    voglio un equivalente di questa linea, ma in JavaScript:

    <?php list($Id, $Iduser, $Idmany) = explode("," , $IdALL); ?> 
    

    Dove:

    $IdALL = '1, 2, 3'; 
    

    C'è un modo per farlo con JavaScript e che potrebbe essere supportato su tutti i browser moderni?

    +0

    JavaScript 1.7 ha [assegnazioni destrutturanti] (https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2Fsection%29) ma solo il gecko ha qualche reale implementazione di JavaScript 1.7 e [noi bkit si comporta male] (https://bugs.webkit.org/show_bug.cgi?id=23097). –

    +0

    @MuthuKumaran Questo mi fa impazzire. Spero che presto venga ampiamente supportato. –

    risposta

    7
    var values = "1, 2, 3".split(", "); 
    var keys = ["Id", "Iduser", "Idmany"]; 
    var final = {}; 
    
    for(var i = 0; i < values.length; i++){ 
        final[keys[i]] = values[i]; 
    } 
    

    Naturalmente, a scapito di leggibilità si potrebbe fare tutto questo in l'istruzione for:

    for(var i = 0, values = "1, 2, 3".split(", "), keys = ["Id", "Iduser", "Idmany"], final = {}; i < values.length; i++){ 
        final[keys[i]] = values[i]; 
    } 
    

    Le variabili possono quindi accedere come segue:

    alert(final.Id); 
    alert(final.Iduser); 
    alert(final.Idmany); 
    
    +0

    Grazie Asad, ma come potrei usare la variabile da il per" ? Io li avviso dentro il per e funziona, ma fuori non lo fa! –

    +2

    @SamiElHilali Devi accedervi come proprietà dell'oggetto 'final'. Ho aggiunto questo alla mia risposta. –

    +0

    Sei semplicemente fantastico. molte grazie ! –

    1

    No, JavaScript non ha attualmente alcun equivalente del costrutto list (che è chiamato "assegnazione destrutturante"). Devi assegnare le variabili individualmente. ES.next may very well have something per questo, ma non l'ES5 corrente (o ES3 sui browser più vecchi).

    Quindi la cosa migliore che si possa fare è un po 'più scomodo:

    var idAll = "1, 2, 3"; 
    var parts = idAll.split(/\s*,\s*/); 
    var id = parts[0]; 
    var idUser = parts[1]; 
    var idMany = parts[2]; 
    

    Nota che gli ID saranno stringhe; se vuoi che siano numeri, dovrai analizzarli (parseInt è un'opzione, mettere un + davanti a parts[0] et. al. è un altro; this answer entra nei dettagli).

    +0

    Questa idea con il '+' è ottima. Grazie. – Hafenkranich

    1

    prega di consultare il sito: http://phpjs.org/functions/

    Qui si desidera che tutte le funzioni disponibili in php per js.

    +1

    Questo non può essere fatto anche con cose da quel sito. JavaScript non ha la struttura linguistica necessaria per consentire di assegnare più variabili contemporaneamente (e richiederebbe il supporto della lingua, non si può semplicemente scrivere una funzione per farlo). –

    +1

    Questo non risponde alla domanda. Non sono riuscito a trovare la funzione 'list' dal tuo link. –

    +0

    @Muthu Si prega di elencare() l'implementazione in Javascipt per favore seguire il link: http://solutoire.com/2007/10/29/javascript-left-hand-assignment/ –

    Problemi correlati