[javascript] 자바 스크립트에서 (키, 값)을 반복하는 방법은 무엇입니까?

다음 형식의 사전이 있습니다.

dictionary = {0: {object}, 1:{object}, 2:{object}}

다음과 같은 작업을 수행하여이 사전을 반복하는 방법

for((key,value) in dictionary){
  //Do stuff where key would be 0 and value would be the object
}



답변

tl; dr

  1. ECMAScript 5에서는 불가능합니다.
  2. ECMAScript 2015에서는 Maps를 사용 하여 가능합니다 .
  3. ECMAScript 2017에서는 쉽게 사용할 수 있습니다.

ECMAScript 5 :

아니요, 객체로는 불가능합니다.

for..in, 또는 Object.keys이와 같이 반복해야합니다.

for (var key in dictionary) {
    // check if the property/key is defined in the object itself, not in parent
    if (dictionary.hasOwnProperty(key)) {
        console.log(key, dictionary[key]);
    }
}

참고 :if 위 의 조건은 dictionary객체 자체의 속성을 반복하려는 경우에만 필요합니다 . 때문에for..in상속 된 모든 열거 가능한 속성을 반복 입니다.

또는

Object.keys(dictionary).forEach(function(key) {
    console.log(key, dictionary[key]);
});

ECMAScript 2015

ECMAScript 2015에서는을 사용하여 Map객체 를 사용 하고 반복 할 수 있습니다 Map.prototype.entries. 해당 페이지에서 인용 한 예,

var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

var mapIter = myMap.entries();

console.log(mapIter.next().value); // ["0", "foo"]
console.log(mapIter.next().value); // [1, "bar"]
console.log(mapIter.next().value); // [Object, "baz"]

또는 for..of이와 같이 반복 하십시오.

'use strict';

var myMap = new Map();
myMap.set("0", "foo");
myMap.set(1, "bar");
myMap.set({}, "baz");

for (const entry of myMap.entries()) {
  console.log(entry);
}

산출

[ '0', 'foo' ]
[ 1, 'bar' ]
[ {}, 'baz' ]

또는

for (const [key, value] of myMap.entries()) {
  console.log(key, value);
}

산출

0 foo
1 bar
{} baz

ECMAScript 2017

ECMAScript 2017에는 새로운 기능이 도입되었습니다 Object.entries. 이를 사용하여 원하는대로 객체를 반복 할 수 있습니다.

'use strict';

const object = {'a': 1, 'b': 2, 'c' : 3};
for (const [key, value] of Object.entries(object)) {
  console.log(key, value);
}

산출

a 1
b 2
c 3


답변

이 시도:

dict = {0:{1:'a'}, 1:{2:'b'}, 2:{3:'c'}}
for (var key in dict){
  console.log( key, dict[key] );
}

0 Object { 1="a"}
1 Object { 2="b"}
2 Object { 3="c"}


답변

Object.entries()방법은 ES2017에 지정 되었으며 모든 최신 브라우저에서 지원됩니다 .

for (const [ key, value ] of Object.entries(dictionary)) {
    // do something with `key` and `value`
}

설명:

  • Object.entries()객체를 가져 와서 { a: 1, b: 2, c: 3 }키-값 쌍의 배열로 바꿉니다 : [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ].

  • 이를 통해 for ... of생성 된 배열의 항목을 반복 할 수 있습니다.

  • 우리 때문에 보장 소위 반복 배열의 각 항목은 두 항목 배열 자체 즉, 우리가 사용 destructuring 직접 지정 변수 keyvalue그 제 1 및 제 2 항목.


답변

다음과 같이 할 수 있습니다 :

dictionary = {'ab': {object}, 'cd':{object}, 'ef':{object}}
var keys = Object.keys(dictionary);

for(var i = 0; i < keys.length;i++){
   //keys[i] for key
   //dictionary[keys[i]] for the value
}


답변

이 시도:

var value;
for (var key in dictionary) {
    value = dictionary[key];
    // your code here...
}


답변

2020에 오신 것을 환영합니다 * ES6의 드롤 *

여기에 꽤 오래된 답변이 있습니다-파괴를 활용하십시오. 제 생각에는 이것은 객체를 반복하는 가장 좋은 (매우 읽기 쉬운) 방법입니다.

Object.entries(myObject).forEach(([k,v]) => {
    console.log("The key: ",k)
    console.log("The value: ",v)
})


답변

빠르고 쉬운 방법은

Object.entries(event).forEach(k => {
    console.log("properties ... ", k[0], k[1]); });

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries 설명서를 확인
하십시오.