/ / Ottieni valore dalla variabile dinamica [duplicato] - javascript

Ottieni valore dalla variabile dinamica [duplicato] - javascript

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 № 1

Sarebbe 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.