Ho variabili come app.figures.data[0].user.x0
, app.figures.data[0].user.y1
, e app.figures.data[0].user.d2
. A queste variabili sono stati assegnati valori.
Esiste un numero dinamico di queste variabili che seguono l'ordine di incremento del numero finale nella variabile (ovvero: La variabile successiva dopo app.figures.data[0].user.d2
è app.figures.data[0].user.x3
).
Sto cercando di determinare un modo efficiente per ottenere dinamicamente il valore di ciascuna variabile in un ciclo.
for(j = 0; j < len; j++){
var x = "x" + j;
j++;
var y = "y" + j;
j++;
var d = "d" + j;
var dresult = app.figures.data[0].user.d;
}
Ho bisogno del valore di dresult
come era per app.figures.data[0].user.d2
. Per esempio, app.figures.data[0].user.d2
è 23
così dresult
dovrebbe essere 23
su quella iterazione.
Sono nuovo di JS, quindi ogni suggerimento è apprezzato.
risposte:
1 per risposta № 1Sarebbe il []
operatore lavora per te?
for (let j = 2; j < len; j += 3) {
let dresult = app.figures.data[0].user["d" + j];
}
0 per risposta № 2
var values=["x0","y1","d2"]. map(el=>this[el],app.figures.data[0].user);
Associa le chiavi ai valori corrispondenti. Puoi metterlo in un ciclo:
for(var i=0; i<100;i+=3){
var values=["x","y","d"]. map((el,id)=>this[el+(i+id)],app.figures.data[0].user);
values.forEach(console.log);//just an example case
}
Alcune spiegazioni:i è il contatore, incrementato di 3, si ferma a 102. el è un elemento dell'array, quindi "y", e id è l'indice in quell'array. questo è l'oggetto utente. Quindi this[el+(i+id)] ottiene il valore di questa proprietà degli oggetti.
A proposito nomi di variabili dinamiche sono davvero di pessimo stile e causeranno molti bug. Può cambiare il tuo codice per farlo funzionare senza di esso.