Javascript - คีย์ออบเจ็กต์ -> ค่า


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

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

แต่ฉันต้องการผ่านตัวแปรเช่นนี้

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

ต้องทำอย่างไร?

คำตอบ:


109

ใช้[]สัญกรณ์สำหรับการแสดงคุณสมบัติสตริง:

console.log(obj[name]);

มิฉะนั้นจะมองหาคุณสมบัติ "ชื่อ" แทนที่จะเป็นคุณสมบัติ "a"


17

obj["a"]เทียบเท่าobj.a ดังนั้นใช้obj[name]คุณจะได้รับ " A "


1
โปรดทราบว่า obj [name] จะส่งคืน obj.name ซึ่งไม่ได้กำหนด
Hamid

1
ใช้ backticks `` ถ้าคุณเขียนโค้ดสั้น ๆ
JuicY_Burrito

8

ใช้ไวยากรณ์นี้:

obj[name]

โปรดทราบว่าobj.xจะเหมือนกับobj["x"]ตัวระบุ JS ที่ถูกต้องทั้งหมด แต่รูปแบบหลังยอมรับสตริงทั้งหมดเป็นคีย์ (ไม่ใช่แค่ตัวระบุที่ถูกต้อง)

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

3

ฉันใช้ไวยากรณ์ต่อไปนี้:

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

รับข้อผิดพลาด:

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

รับข้อความ:

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

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);

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.