Javascript - Objektschlüssel-> Wert

87
var obj = {
   a: "A",
   b: "B",
   c: "C"
}

console.log(obj.a); // return string : A

aber ich möchte durch eine Variable wie diese auskommen

var name = "a";
console.log(obj.name) // but return undefined

Wie macht man das?

Chameron
quelle

Antworten:

105

Verwenden Sie die []Notation für Zeichenfolgendarstellungen von Eigenschaften:

console.log(obj[name]);

Andernfalls wird eher nach der Eigenschaft "name" als nach der Eigenschaft "a" gesucht.

David Tang
quelle
17

obj["a"]ist gleichbedeutend mit obj.a so erhalten obj[name]Sie " A "

Longda
quelle
1
Bitte beachten Sie, dass obj [Name] obj.name zurückgibt, das nicht definiert ist.
Hamid
1
Verwenden Sie Backticks ``, wenn Sie kurze Mengen Code schreiben
JuicY_Burrito
7

Verwenden Sie diese Syntax:

obj[name]

Beachten Sie, dass dies obj.xdasselbe ist wie obj["x"]für alle gültigen JS-Bezeichner, aber das letztere Formular akzeptiert alle Zeichenfolgen als Schlüssel (nicht nur gültige Bezeichner).

obj["Hey, this is ... neat?"] = 42

quelle
3

Ich benutze die folgende Syntax:

objTest = {"error": true, "message": "test message"};

Fehler erhalten:

 var name = "error"
 console.log(objTest[name]);

Nachricht erhalten:

 name = "message"
 console.log(objTest[name]);
ppaulino
quelle
1

https://jsfiddle.net/sudheernunna/tug98nfm/1/

 var days = {};
days["monday"] = true;
days["tuesday"] = true;
days["wednesday"] = false;
days["thursday"] = true;
days["friday"] = false;
days["saturday"] = true;
days["sunday"] = false;
var userfalse=0,usertrue=0;
for(value in days)
{
   if(days[value]){
   usertrue++;
   }else{
   userfalse++;
   }
    console.log(days[value]);
}
alert("false",userfalse);
alert("true",usertrue);
Sudheer Nunna
quelle
0
var o = { cat : "meow", dog : "woof"};
var x = Object.keys(o);

for (i=0; i<x.length; i++) {
  console.log(o[x[i]]);
}

IAB

John Murkey
quelle