当前位置: 首页 > 知识库问答 >
问题:

如何在JavaScript中迭代(键、值)?[重复]

经福
2023-03-14

我有一本字典的格式

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
}

共有3个答案

荣俊杰
2023-03-14

对象。entries()方法已在ES2017中指定(并且在所有现代浏览器中都受支持):

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

解释:

>

  • <代码>对象。entries()接受一个像{a:1,b:2,c:3}这样的对象,并将其转换为一个键值对数组:[['a',1],'b',2],'c',3]

    用<代码>表示。。。我们可以循环遍历这样创建的数组的条目。

    由于我们保证每个如此迭代的数组项本身就是一个双条目数组,因此我们可以使用解构直接将变量keyvalue分配给它的第一个和第二个项。

  • 郎磊
    2023-03-14

    试试这个:

    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"}
    
    乜烨霖
    2023-03-14
    1. 在ECMAScript 2017中,只需调用Object。条目(yourObj)

    ECMAScript 2017引入了一个新的对象。条目功能。您可以根据需要使用它来迭代对象。

    '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
    

    在ECMAScript 2015中,没有对象。条目,但您可以使用映射对象,并使用映射对其进行迭代。原型条目 。引用那一页的例子,

    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"]
    

    或对..进行迭代。。的,如下所示

    '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
    

    不,这在物体上是不可能的。

    您应该对..使用<代码>进行迭代。。在对象中。按键,如下所示

    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条件。因为。。将遍历所有继承的可枚举属性。

    或者

    Object.keys(dictionary).forEach(function(key) {
        console.log(key, dictionary[key]);
    });
    
     类似资料:
    • 我有一本字典的格式是 我怎样才能通过这样的方法来遍历这本词典

    • 我不熟悉Kafka streams,我尝试通过keyValueStore迭代Kafka streams表中的项: 这个想法是使用KeyValueStore创建一个Ktable(我也尝试过globalKTable)。然后一个分离的线程负责读取KeyValueStore的内容,以便遍历每个键的最后一个值。 在线程中,即使我在主题“test”上生成项目,keyValueStore也会保持为空。 有什么我

    • 我正在尝试迭代以下JSON: 这里的键是动态的。我要两个钥匙=?值=?

    • 有存储库文件夹,其中有100个图像文件夹。我想遍历每个文件夹,然后对这些文件夹中的图像执行相同的操作。 例如:存储库—— 有人知道优雅的做法吗? 我的操作系统是MacOS(里面有DS_Store元数据文件)

    • 我有一个目标: 我如何在我的组件Tempate中迭代这个项目?我试过:

    • 通过一个简单的数组,我可以使用标准的循环来实现: 但是如何用实物来做呢?