Javascript 객체 또는 열거하십시오 반복하고 어떻게 합니까?
I have a javascript 객체여야 다음과 같습니다.
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
이제 모든 요소를 반복하고 싶다 'p' ('p1', 'p2', 'p3'). 가서 자신의 키와 값을. 그렇게 할 수 있습니까?
내가 필요한 경우 javascript 객체여야 수정할 수 있습니다. 내가 원하는 일부 키 값 쌍이 나의 궁극적인 목표는 반복하고, 가능하면 사용하지 않는 것이 '평가'.
2688
38
대한 인 '반복' 다른 사람이 같이 사용할 수 있습니다. 그러나 여러분은 있는지 확인하기 위해 주요 확보하십시오 doesn&, t come from # 39 는 객체의 실제 등록 및 원형 (prototype).
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
'위한' 디이브이 사용할 경우 it 에 대한 인 사용하지 않는 대신 ',' 라는 속성 및 로비치스키스 () 은 정의되지 않은 반환되므로 사용하지 않고, 오직 object& # 39 의 고유한 속성 속성 전체 프로토타입 체인
Ecmascript) 에서 5 결합할 수 있습니다 '로비치스키스 ()' 및 '아리스프로토티페스포리치 ()':
ECMAScript 6 자도으로 ['퍼트로프'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for.of):
ECMAScript 8 자도으로 '오브ject.렌트리스 ()' 의 기피하고 있는 조회할 수 있어 각 값마다 원래 오브젝트도:
',', '와' 오브ject.렌트리스 데스트루스튜링 퍼트로프 결합할 수 있습니다.
로비치스키스 오브ject.렌트리스 () 는 모두 ' ()' 와 'a' for.in '속성' 같은 순서로 루프 그러나 무시하시겠습니까 프로토타입 체인 . # 39 의 고유한 속성, 열거 object& 만 이터레이션됩니다.
이 때문에 매우 신중해야 한다고 하지만, 이러한 종류의 루프 (loop) 는 모든 함께 속성을 사용할 때 프로토타입 체인을 .
따라서 대한 인 루프, 항상 사용할 때 활용할 수 있는지 여부를 결정할 수 있는 방법을 사용하면 현재 등록 정보 '진짜' 해스운프로페티 이터레이션은 재산에 대한 확인 you& 객체에는 # 39, re:
만약 우리가 don& # 39, t, t # 39 won& 완료해야 하는 얘기는 전혀 다른 방법을 통해 루프을 객체에는.
요즘 많은 방법을 통해 자신의 컬렉션을 통해 잘 알려진 자바스크립트 라이브러리는 반복, 및 객체에는, 즉 어레이를 같은 어레이입니다 객체에는. 이러한 방식이 완전히 호환됩니까 편리하게 사용할 수 있으며 어떤 브라우저를.
$ 그레이크 (obj, 함수 (키 값) { 콘솔드로그 (key, 값). }).
_.each (obj, 함수 (가치, 키) { 콘솔드로그 (key, 값). }).
_.forIn (obj, 함수 (가치, 키) { 콘솔드로그 (key, 값). }).
일반적으로 모든 설명됨 방법이 동일한 동작 없이 객체에는 공급했다. 빠른 토종 'for.in' 루프는 일반적으로 사용하는 것 외에 어떤 경쟁업체보다도 추상화 같은 수 () ',' 이케리드레이크 이러한 방식이 매우 쉽게 사용할 수 있는 코딩 제공하십시오 소비량이 더 나은 오류 처리.
[2]: http://underscorejs.org/ # 각 [3]: http://lodash.com/docs # 포리치 [4]: http://lodash.com/docs # 프로린 [5]: http://lodash.com/docs # 포운
Ecma 스크립트 '-' 에서 5 의 새로운 분야에 이터레이션에 ipv6-literal. 로비치스키스 외곽진입 합니다.
자세한 내용은 [매든] [6] 에서 볼 수 있습니다
내 선택은 아래 빠른 솔루션을 최신 브라우저 (, FF25 Chrome30 IE10)
이 방식은 다른 구현을 통해 성능을 비교할 수 있는 jsperf.com:
브라우저 지원 [Kangax& # 39 의 호환성 표] [4] 에서 볼 수 있습니다
늙은 일반 및 [전체] [6] 있지만브라우저에 폴리필 합니다.
'perfjs.info' 이 건에 대해 질문을 가장 많이 사용되는 모든 성능 비교:
[객체에는 ipv6-literal. 이터레이션에] [8]
[3] :http://jsperf.com/object-keys-iteration/30
로비치스키스 [4]:
[6] :https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys [7] :http://jsperf.com/object-literal-iteration/5 [8] /384a61ca-da2e-4fd2-a113-080010d4a42b: http://perfjs.info/ #!
그냥 마치 반복할 수 있습니다.
참고로, '키' s just it& 속성 값을 # 39 의 시행하십시오 않습니다, 색인 값입니다.
서론:
2018년 이곳에서 너회의 옵션을 통해 루프을 object& # 39 의 특성은 (따라 몇 가지 예를 들면 목록):
D ',' 함께 모두야 아니했노라 대한 인 you& # 39 를 사용하여 chunghwa 루프을 함정이거나 어레이입니다 ('는', '위한', '포리치' 등).
예를 들면 다음과 같다:
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
, 모든 속성 등 비사양 열거 상속됨 수준들과:
<! - begin 스니핏: js 숨기십시오: 진정한 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
[2]: https://tc39.github.io/ecma262/ # 미국 증권거래위원회 (sec) 에 대해, 그리고 문
[4]: https://tc39.github.io/ecma262/ # sec-object.keys
[6]: https://tc39.github.io/ecma262/ # sec-object.values
[8]: https://tc39.github.io/ecma262/ # sec-object.entries
[10]: https://tc39.github.io/ecma262/ # sec-object.getownpropertynames
[12): https://tc39.github.io/ecma262/ # sec-object.getownpropertysymbols
[14]: https://tc39.github.io/ecma262/ # sec-reflect.ownkeys
[16]: https://tc39.github.io/ecma262/ # sec-object.getprototypeof
이 때문에 점점 더 많이 나는 이 글을 es2015 오토메이티드 사용을 포함하는 발생기입니다 및 반복자가 부드럽게 회전하려면 반복할 ' [키, 가치]' 쌍. 예를 들어 있기 때문에 가능한 다른 언어로 루비.
여기서 확인을 는 코드:
할 수 있는 방법에 대한 모든 정보를 반복자가 및 발생기입니다 http://support. 개발자 mizilla 호출이네요 찾을 수 있습니다.
희망을 사람에게 도움이 됐다는 것입니다.
이를 통해 '반복' 에는 '오브ject.렌트리스 es2017 발쿰치로 [키 값을]' 쌍으로 객체에는 더욱 간편해집니다. 이는 지금까지 알려진 것 ts39 에 따르면 일부 표준 스태이징할 정보.
내가 생각하는 것보다 훨씬 더 많은 시간이 내 것이 될 수 있는 최신 업데이트하려면 it& # 39, s now let it 되었다.
사용) 에 대해 더 많이 찾을 수 있습니다. 매든 페이지
참고: # 39 를 통해 할 수 있지만, '길이' ll 반복할 어레이에는 you& 및 기타 속성, 고쳐주렴.
39, 이후 모든 해답을 여기서 해스운프로페티 isn& 효과를 볼 수 없는 나만의 사용 때문에 필요한 내 json 객체인지 청소하십시오. # 39 의 javascript 처리, s there& 추가할 때마다 정말 아무런 의미가 없습니다. 이게 다 I& # 39, m 사용:
39 의 it& 흥미로운 사람들을 이런 답변 %s/dbase/ext_table. 모두에서 로비치스키스 () '와' 퍼트로프 결합됨 적은 있으나 그 '' 손을 댔다.
<! - 모든 언어: lang-js->.
39, t '는' 그냥 '퍼트로프 can& sub> <; 너 때문에,' 및 's not 오버클로킹된 반복자가 객체에는 it& # 39 ()' 이 'ing' 또는 '스포리치 퍼트리네스 로비치스키스 ()' 가 ugly/inefficient.< br/>;
39 m ' (for.in) 에서, 대부분의 사람들은 오히려 i& 자제' 를 확인하지 않고 스트라운프로페티 () '또는') 로, s 도 좀 과도한 that& # 39 위, I& # 39 m here to my answer 도왔으매 이외의 say.< /sub>;;
그래서 내 long as you 포함시키십시오 심 (아래 참조).
39, 실제 매핑해야 doesn& 개체를 만들지 않고도 훌륭한 통사 설탕 없다.
사실, 이 경우 계속 활용할 수 있는 심 그들이성년에 Map& # 39 의 다른 기능 (시밍 없이 그들을 모두) 그래도 그들이성년에 사용할 수 있기 때문에 이제 이트레이블 이제 그냥 깔끔한 객체에는 표기법 (make a 로부터 맵을 객체에는 it!
39 만 t 을 (를) '하는 사람들을 위한 don&, 또는 일반적으로 안심 할 수 있는 기능을 창에서 엉망하지 프로토타입' 대신 '다음' 이 같은 일이 호출하십시오 제오브지트레이터 (), *
이제 그냥 평범한 함수 호출, 영향을 받는 정보기술 (it) 을 아무것도아니야 아무도요
또는
[There& # 39 에 있는 이유도 wouldn& # 39, 빗나갔다.] (https://jsfiddle.net/4dkos9mw/16/)
Welcome to the future.
다음은 또 다른 방법은 객체를 반복할 수 있습니다.
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
<! - 언어: > js 랭 -;
var p = { p1" ";: " value1"; p2" ";: " value2"; p3" ";: " value3"; };
로비치스키스 (p) 스포리치 (키 = >. {콘솔드로그 (key, p [] 키를)})
끝 - < 스니핏 >;!
>. 로비치스키스 (목표): Array< string>;
>. 모든 소중한 구체화하십시오 키 (비 상속) 모든 열거 읽어들입니다 İç 이다.
따라서 동일한 키를 키로 해스운프로페티 테스트를 통해 각 객체에는 보기입니다 목록니다 생각이 있습니다. # 39 더 이상 시험 운영에 필요한 너회가 don& 스포리치 로비치스키스 (목표), t (함수 (키) {}) '와' 더 빠른 것으로 돼 있다. # 39 의 let& 입증할 수 있다.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
끝 - < 스니핏 >;!
나는 내 Firefox 다음과 같은 결과가
밀리초입니다. 40.21101451665163 - 로비치스키스 외곽진입 있었다.
크롬 (http://codepen.io/dsheiko/pen/JdrqXa) 에서 ps. 더욱 큰 차이
PS2: 2015년 의 ES6 (EcmaScript) 이트레이블 괜찮게 객체에는 반복할 수 있습니다.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
끝 - < 스니핏 >;!
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
아래와 같은 로비치스키스 사용할 수도 있습니다 () 와 반복할 객체에는 키 값을 얻을 수:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
이 방법 () ',' 로비치스키스 배열입니다 # 39 의 고유한 열거 되돌려줍니다 주어진 object& 이다. 이에 대한 자세한 내용은 here
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
끝 - < 스니핏 >;!
39 와 같은 사람들을 위한 don& " .용, t; - in&quo * 방법:
이제 단순 통화 수 있습니다.
39 와 충돌함 포리치 방법 don& 경우, t want to get it with your 고유한 이름을 다른 이름을 지정할 수 있습니다.
Javascript 코드를 디렉토리에만 없이 종속물과의:
루프 꽤 흥미로운 순결케 사용할 때 JavaScript 수 있습니다. Ecma6 불과한 것으로 보인다 (새로운 2015년 JavaScript 사양명세) attaboy 루프가 go-dell 제어입니다. # 39 m 로, 이 글을 쓰는 죄송합니다. I& 브라우저 및 통합 개발 환경 (IDE) 은 모두 지원할 수 있는 새로운 종을 완전히 벗어나지 못하고 있으며 걸.
전에 어떤 ECMA6 at-a-glance 슬라이드에서는 JavaScript 객체로 루프 것 같습니다.
또한 이 범위 밖에 있는 ECMAScript 5.1 그러니까말이야 추가했어야 포리치 '방법' 이 질문을 하지만 2011년 만들어진 반복하고 있는 새로운 방법을 스토리지에만 기본적으로 향산된 동시에 "에 대한 자세한 정보 및 이전 어레이에는 것가운데 비사양 이트레이블 객체에는 루프지 것이다 ' 그러나 이 사실은 '방법' 브레이크 '새' 포리치 홀수입니다 지원하지 않는 모든 신규인지 주도한 다른 문제.
2011년, 실제 솔리드로 기본적으로 다른 방법이 없는 것보다 루프 JavaScript 로 널리 사용되는 라이브러리 (jQuery, 밑줄 등) 을 다시 구현 했다.
2015년 기준으로, 이제 더 좋은 방법은 바로 루프 () 와 브레이크 (break) 모든 개체 유형 (등 시스템 및 문장열). 다음은 주요 권장안을 때 JavaScript 에서 결국 어떤 루프 같이 됩니다.
단, t 지원, 2016년 18일 6월 현재 대부분의 브라우저에서 won& # 39 위 코드는. 심지어 이 특별한 국기를 활성화하십시오 크롬 할 때 사용할 수 있습니다. # javascript 활성화하십시오 조화 chrome://flags/ ''
이 새로운 표준이 될 때까지 계속 사용할 수 있는 대안을 수축됐는데 이전 방법 또한 널리 사용되는 라이브러리 또는 심지어 가벼운 대안을 # 39, 이러한 라이브러리를 사용하는 사람들을 위한 aren& 없다.