Domanda

Questo è un po 'difficile per me di articolare, ma in PHP si può dire qualcosa del tipo:

$myArray['someindex'] = "my string";

e se non v'è alcun indice di nome che, si creerà / assegna il valore, e se c'è un indice, si sovrascrive il valore esistente.

Confronta questo per Javascript dove oggi ho dovuto fare controlli in questo modo:

if (!myObject[key]) myObject[key] = "value";

So che questo può essere un po 'di un punto esigente, ma c'è un nome per la capacità di PHP (e molte altre lingue) per fare questi controlli in proprio in contrasto con il più prolisso (leggi: PITA) Metodo di Javascript?

Modifica

Mi sono confuso nel chiedere questo. Diciamo che si desidera aggiungere a questa struttura:

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}

Ho avuto un problema di oggi dove ho ricevuto i dati tabulari e volevo metterla in un albero un po 'come questo con la costruzione di un oggetto.

Quando ho iniziato i miei cicli, ho avuto difficoltà a fare nuovi indici come myobject['holidays'][thisVariable][date] = 4/20/2010 se l'albero non fosse stato per lo più costruita a quel punto.

Prendo un esempio di codice dal mio altro computer, se questo non è chiaro, mi spiace per il pensiero poveri.

È stato utile?

Soluzione

direi 'auto-vivificazione' http://en.wikipedia.org/wiki/Autovivification da Perl potrebbe essere rilevante, ma funziona diverso da quello che hai descritto. La pagina wiki ha una buona sintesi. Altre lingue come Ruby supportano un gancio "default azione" per le chiavi di hash che non sono stati assegnati, che possono essere utilizzati per auto-vivificazione pure.

Per esempio, in Ruby:


>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20

Altri suggerimenti

Ti sbagli. Per assegnare un valore alla chiave di un oggetto in javascript, non è necessario eseguire tale verifica. Il valore verrà assegnato se v'è già un valore per quella chiave o meno.

Pensateci. Come si potrebbe mai ottenere i valori in un oggetto o hash se si doveva avere un valore per primi?

JavaScript fa esattamente la stessa cosa di PHP qui: myObject [key] = "valore" sovrascriverà il valore esistente se ne esiste uno. Può dirci perché si pensa il contrario?

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