JavaScript 객체의 키를 jQuery 또는 순수 JavaScript에서 배열로 가져 오려고합니다.객체 키 배열 얻기
덜 구체적인 방법이 있습니까?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
JavaScript 객체의 키를 jQuery 또는 순수 JavaScript에서 배열로 가져 오려고합니다.객체 키 배열 얻기
덜 구체적인 방법이 있습니까?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = Object.keys(foo); // ['alpha', 'beta']
// (or maybe some other order, keys are unordered).
사용 Object.keys
.
이것은 ES5 기능입니다. 즉, 현대의 모든 브라우저에서 작동하지만 will not work in legacy browsers입니다.
ES5 - 심가있는 implementation of Object.keys
you can steal
참고 : 이것은 최신 브라우저에서만 작동합니다 (IE <9가 아니라는 의미입니다). –
그리고 모바일 브라우저는 어떻습니까? –
@SmartyTwiti : 확실하지 않습니다. 나는 그것이 크롬이나 파이어 폭스와 같은 것으로 생각한다. –
jQuery의 $.map
을 사용할 수 있습니다.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' },
keys = $.map(foo, function(v, i){
return i;
});
이 솔루션 (로켓) 괜찮아요 http://jsfiddle.net/KV3RA/3/ – MilkyWayJoe
나에게이 솔루션은 Object.keys() ... IE8에서 작동하지 않습니다. – NLemay
내가 대해 덜 자세한 모르지만 나는 그것이 비록 얼마나 파이썬 모른다는 한 줄의 요청에 의해 한 줄에 다음을 강요하는 영감을 얻었다 ;) 물론
var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);
어쩌면'var enumerableKeysOnThePrototypeChain';) – alex
어쩌면 우리는 객체가 완전히 다른 곳에서 가져온 것과 반대로 객체가 완전히 다른 곳에서 가져온 것이 아니라면 hasOwnProperty에 대해 걱정할 필요가 없다는 것을 알 수있을만큼 똑똑 할 수도 있습니다. –
python @ @ alex의 두 번째 대답 (for foo (keys [i ++] in foo) {}')이긴하지만 여전히 Array.push()를 수행하고 있기 때문에 (전체 함수 선언은 말할 필요도 없음). pythonic 구현은 암시 적 이해에 가능한 한 많이 의존해야하며 람다 표현식을 사용하지 않는 것이 좋습니다. – cowbert
, Object.keys()
는 개체의 키를 얻을 수있는 가장 방법입니다. 귀하의 환경에서 사용할 수 없다면, 예를 들어 shimmed 코드를 사용하면됩니다 (단, 루프가 Object.keys()
의 동작과 달리 프로토 타입 체인의 모든 속성을 반복 할 때를 고려해야 함) . 그러나
, 귀하의 예제 코드 ...
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
...을 수정할 수 있습니다. 변수 부분에서 할당 권리를 수행 할 수 있습니다.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [], i = 0;
for (keys[i++] in foo) {}
물론이 동작은 Object.keys()
이 실제로하는 것과 다릅니다 (jsFiddle). shim on the MDN documentation을 사용하면됩니다.
'if (foo.hasOwnProperty (key)) '를 추가하는 것 외에도 내가하는 일이 그 것이다. 또는'$ .map'을 사용하십시오. –
Pythonic 한 - 라이너에 대한 오, 그래도 ... – Richard
전체 답변 가치가없는 오래된 질문이지만, 바이올린을 원하는 사람들을 위해 ... http://jsfiddle.net/LR5D9/3/이 솔루션은 다음을 다룹니다. 'x에 대한 var에 대한 루프를 엉망으로 프로토 타입 선언의 문제 – unsynchronized