2013-06-12 3 views
1

동적 배열을 사용하여 json 객체를 반복해야하는 메소드 코드에서 작업 중입니다. 내가 배열 요소와 항목의 값을 얻을 수있는 방법, http://jsfiddle.net/kslagdive/rjFHV/ 저를 제안하십시오 : 여기배열을 사용하여 객체에서 값 검색

var tableHeaders = ["id", "name", "status"];  
var item = { 
    id: 1, 
    name: "test name", 
    status: true, 
    email: "[email protected]" 
}  
console.log(item.id); // works well --> 1  
console.log(tableHeaders[0]); // works well --> id  
console.log(item.tableHeaders[0]); // not works 

jsfiddle입니다 : 내 코드는 다음과 같다? 재산의 이름은 동적이기 때문에 감사

답변

2

, 당신은 dot notation 대신 bracket notation을 사용할 수 있습니다

console.log(item[tableHeaders[0]]); // Works. 
+0

많은 감사합니다. 그것은 작동한다! !!! – KSL

1

그것은해야합니다 ...

item[ tableHeaders[0] ]; 

을 ... 그에 bracket notation를 사용한다 이름으로 부동산에 액세스하십시오. 당신은 예를 들어, 여기에 복잡한 표현식을 사용합니다 : Fiddle

+0

네. 점 대신에 괄호 표기법을 사용합니다. 감사. – KSL

1

는 동적 키

를 사용할 때
console.log(item[tableHeaders[0]]); 

데모 대신 . 표기의 [] 표기법을 사용하기 위해 필요 item 값. 시도해보십시오.

var tableHeaders = ["id", "name", "status"];  
var item = { 
    id: 1, 
    name: "test name", 
    status: true, 
    email: "[email protected]", 
    tableHeaders: tableHeaders // define "tableHeaders" as value of "item" 
} 

감사합니다.

그럼 대답은 여기 어쨌든 이미 :

var key = tableHeaders[0]; // the key for the value you want to extract from items. 
var value = item[key];  // get the value from item based on the key defined 
          // in table headers using the [Bracket notation][1] 
          // (@Frédéric Hamidi). 
+0

점 대신 대괄호 표기법을 사용합니다. 감사. – KSL

0

Tabheaders가되지 않습니다 :

item[ 'e' + 'mail' ]; // the same as item.email 
+2

나는'1'이 반환하기를 바란다고 믿는다. (id 속성의 값) – xec

관련 문제