2015-12-24 3 views
1

Я довольно новичок в Javascript и пытаюсь перебирать словарь в Javascript. Я могу легко сделать это в Python:Итерация по словарю в Javascript

for key, value in dict.items(): 
    //do something 

Есть ли подобный способ сделать то же самое в JavaScript?

Структура Я пытаюсь перебирать это:

{ 'meta.num_prod': 4, 
    'meta.crtd_on': '2015-12-24T06:27:18.850Z', 
    'meta.last_upd': '2015-12-24T06:46:12.888Z', 
    's.103114': 
    { prod_id: '103114', 
     product_type: 'normal', 
     last_updated: '2015-12-24T06:28:44.281Z', 
     qty: 3, 
     created_on: '2015-12-24T06:27:18.850Z' }, 
    's.103553': 
    { prod_id: '103553', 
     product_type: 'normal', 
     last_updated: '2015-12-24T06:46:12.888Z', 
     qty: 1, 
     created_on: '2015-12-24T06:46:12.888Z' } } 
+2

Возможный дубликат [Как перечислить свойства объекта JavaScript?] (http://stackoverflow.com/questions/85992/how-do-inumerate-the-properties-of-a-javascript-object) – Pang

+0

@Pang отвечает, что нет обширна. Немного старый тоже. – m0meni

ответ

3

Там несколько способов этого один стандартный способ использует Object.keys:

Вы можете сделать

Object.keys(obj).forEach(function(key) { 
 
    console.log(key + " " + obj[key]); 
 
});

Если вы используете JQuery вы можете использовать $.each() метод как это:

$.each({ name: "John", lang: "JS" }, function(k, v) { 
 
    console.log("Key: " + k + ", Value: " + v); 
 
});

Или вы можете использовать for...in loop, но большинство людей, которых я знаю не используют их в наши дни из-за лучших альтернатив.

for (var prop in obj) { 
 
    console.log("obj." + prop + " = " + obj[prop]); 
 
}

Если вы когда-нибудь в конечном итоге желая усложнять вещи, которые вы можете использовать es6 generators как это, чтобы получить синтаксис более похожее на Python:

// The asterisk after `function` means that 
// `objectEntries` is a generator 
function* objectEntries(obj) { 
    let propKeys = Reflect.ownKeys(obj); 

    for (let propKey of propKeys) { 
     // `yield` returns a value and then pauses 
     // the generator. Later, execution continues 
     // where it was previously paused. 
     yield [propKey, obj[propKey]]; 
    } 
} 

let jane = { first: 'Jane', last: 'Doe' }; 
for (let [key,value] of objectEntries(jane)) { 
    console.log(`${key}: ${value}`); 
} 
// Output: 
// first: Jane 
// last: Doe 
+0

Как ваш ответ «более обширен», чем тот, который упоминается в вопросе Панга? В нем нет ничего нового ... И поскольку Ajay - это новичок, ссылки на некоторые ** хорошие ** документы также должны быть добавлены. – Andreas

+0

@Andreas Ответов: 8, у всех есть 'for ... in' loops и ничего больше. И я добавлю документацию, спасибо за упоминание об этом. – m0meni

+0

'для ... in',' Object.keys', '$ .each', некоторые пользовательские методы (используя' for ... in'), а также один со ссылкой на 'underscore.js'. – Andreas