Voglio fare una funzione chiamata createAssociativeArray
che recive due parametri: string
e object
, in questo modo:Generare una struttura annidata oggetto stringa chiave/percorso
function createAssociativeArray(string, object) {
//...
}
L'ultima voce di string
dovrebbe ottenere il object
dati. Vedere un esempio di utilizzo/reso:
createAssociativeArray('key1.key2.key3', {
data1: 1,
data2: 2,
data3: 3
});
// key1: {
// key2: {
// key3: {
// data1: 1,
// data2: 2,
// data3: 3
// }
// }
// }
Qual è il metodo più semplice e affidabile per farlo?
Utilizzare eval non è possibile.
Quello che mi è stato provato:
function createAssociativeArray(string, object) {
string = string.split('.');
return string.reduce(function(_object, _target, i) {
_object[_target] = (i + 1 === string.length ? object : {});
return _object;
}, {});
}
Non ha prodotto il risultato atteso, perché l'oggetto viene azzerato a {}
.
[JSFiddle]
Stai cercando di implementare spazi dei nomi? Inoltre, da dove viene la variabile 'i'? –
@StefanBaiu, qualcosa come ... È un 'index' da' reduce' (aggiornato). –