421 Stimmen

Dynamische Variablennamen in JavaScript verwenden

In PHP können Sie erstaunliche/abscheuliche Dinge wie diese tun:

$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1

Gibt es eine Möglichkeit, so etwas mit Javascript zu machen?

Wenn ich z.B. eine var name = 'the name of the variable'; kann ich einen Verweis auf die Variable mit dem Namen name ?

3voto

JeanAlesi Punkte 418

Dies ist eine Alternative für diejenigen, die eine dynamisch benannte Variable exportieren müssen

export {
  [someVariable]: 'some value',
  [anotherVariable]: 'another value',
}

// then.... import from another file like this:
import * as vars from './some-file'

Eine andere Möglichkeit ist, einfach ein Objekt zu erstellen, dessen Schlüssel dynamisch benannt werden

const vars = { [someVariable]: 1, [otherVariable]: 2 };

// consume it like this
vars[someVariable];

1voto

Steve Jiang Punkte 621

Auch die Verwendung von Object ist großartig.

var a=123
var b=234
var temp = {"a":a,"b":b}
console.log(temp["a"],temp["b"]);

1voto

enxaneta Punkte 29505

Obwohl dies eine akzeptierte Antwort ist, möchte ich eine Bemerkung hinzufügen:

In ES6 mit let Funktioniert nicht :

/*this is NOT working*/
let t = "skyBlue",
    m = "gold",
    b = "tomato";

let color = window["b"];
console.log(color);

Die Verwendung von var Werke

/*this IS working*/
var t = "skyBlue",
    m = "gold",
    b = "tomato";

let color = window["b"];
console.log(color);

Ich hoffe, dass dies für einige nützlich ist.

1voto

unbreak Punkte 920

Dies wird genau das tun, was Sie in php getan haben:

var a = 1;
var b = 2;
var ccc = 3;
var name = 'a';
console.log( window[name] ); // 1

1voto

M Komaei Punkte 3902

Einfachste Lösung : Erstellen einer Array von Objekten dass jedes Objekt zwei Felder hat (variableName,variableValue)

let allVariables = [];

for (let i = 0; i < 5; i++)
    allVariables.push({ variableName: 'variable' + i, variableValue: i * 10 });

for (let i = 0; i < allVariables.length; i++)
    console.log(allVariables[i].variableName + ' is ' + allVariables[i].variableValue);

OutPut :

variable0 is 0
variable1 is 10
variable2 is 20
variable3 is 30
variable4 is 40

console.log(allVariables) json :

 [
    {
        "variableName": "variable0",
        "variableValue": 0
    },
    {
        "variableName": "variable1",
        "variableValue": 10
    },
    {
        "variableName": "variable2",
        "variableValue": 20
    },
    {
        "variableName": "variable3",
        "variableValue": 30
    },
    {
        "variableName": "variable4",
        "variableValue": 40
    }
]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X