在 Javascript 中迭代字典 [英] Iterating over a dictionary in Javascript

查看:37
本文介绍了在 Javascript 中迭代字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对 Javascript 还很陌生 - 并试图在 Javascript 中迭代字典.我可以在 python 中轻松做到这一点:

I am fairly new to Javascript- and trying to iterate over a dictionary in Javascript. I can easily do so in python:

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

在 Javascript 中是否有类似的方法来做同样的事情?

Is there a similar way to do the same in 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' } }

推荐答案

这个标准方法有多种方法是使用 Object.keys:

There are multiple ways to this one standard way is using Object.keys:

你可以做到

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

如果您使用 jQuery,您可以使用 $.each() 方法,如下所示:

If you are using jQuery you can use $.each() method like this:

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

或者您可以使用 ...在循环中,但我认识的大多数人现在都没有使用它们,因为有更好的选择.

Or you can use a for...in loop, but most people I know don't use them nowadays due to better alternatives.

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

如果您最终想让事情复杂化,您可以使用 es6 生成器 像这样获得更类似于 python 的语法:

If you ever end up wanting to complicate things you can use es6 generators like this to get syntax more akin to 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

这篇关于在 Javascript 中迭代字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆