2014-10-24 4 views
1

해시 배열이있는 경우 반복하는 가장 좋은 방법은 무엇입니까?해시 배열을 반복하는 가장 좋은 방법은 javascript

var a = [{"a": "1"}, {"b": "2"}, {"c": "3"}] 

for(var i in a) { 
    console.log(a[i]) //prints each hash 
    console.log(i) //prints the index 
} 

만약 내가 a, b, c 또는 1,2,3을 얻고 싶다면 가장 좋은 방법은 무엇입니까?

감사

+0

당신은'.keys()'또는'.values ​​()'로 해시를 구분해야합니다. –

+0

'{{a : "1"}, {b : "2"}, {c : "3"}]'은 (는) 유효한 JavaScript가 아닙니다. 변수 a, b 및 c는 초기화되지 않습니다. '[{ "a": "1"}, { "b": "2"}, { "c": "3"}]'이어야합니다. 두 번째'console.log'는 for-loop의 바깥에 있고 중괄호'{...} '를 사용합니다. –

+4

Javascript에서'for (var i in a)'를 사용하여 배열을 반복해서는 안됩니다. 배열 요소가 아닌 더 많은 항목을 포함 할 수있는 'a'의 모든 열거 가능 속성을 반복하기 때문입니다. – jfriend00

답변

5

뭔가 :

var a = [{ 
 
    "a": "1" 
 
}, { 
 
    "b": "2" 
 
}, { 
 
    "c": "3" 
 
}] 
 
var keys = []; 
 
var values = []; 
 

 
for (var i = 0; i < a.length; i++) { 
 
    for (var key in a[i]) { 
 
     if (a[i].hasOwnProperty(key)) { 
 
      keys.push(key); 
 
      values.push(a[i][key]); 
 
     } 
 
    } 
 
} 
 

 
console.log(keys); 
 
console.log(values);
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>

그것은 당신의 배열을 각 개체에 대해 반복 그것의 키를 반복하고, 키를 눌러 것 값을 별도의 배열로 가져옵니다.

+0

Sweet, thanks man. – NorCalKnockOut

2

은 대한-의 루프

이 기능은 파이어 폭스 (31)에 출연
for (obj of a){ 
    var keys = Object.keys(obj) // if you don't know the keys 
    var value = obj[keys[0]] //in case your object has only one key 
} 

인 ECMAScript 6에이 제안 그리고 그것을 구현하지 않습니다 크롬 (38) IE와 함께 제공됩니다. 다른 브라우저에 대해 모르십시오. 또한

,이 같은

a.forEach(function(obj){ 
    var keys = Object.keys(obj) // if you don't know the keys 
    var value = obj[keys[0]] //in case your object has only one key 
}); 
+0

IE에서 사용하려면 다른 방법이 있습니까? – NorCalKnockOut

+1

내 편집에 대체 솔루션보기 –

관련 문제