【问题标题】:JSON forEach get Key and ValueJSON forEach 获取键和值
【发布时间】:2015-12-21 11:16:44
【问题描述】:

我在名为obj 的 JSON 对象上有以下 forEach 循环:

Object.keys(obj).forEach(function(){});

我怎样才能使对象内每个项目的console.logkeyvalue 都成为console.log

类似这样的:

Object.keys(obj).forEach(function(k, v){
    console.log(k + ' - ' + v);
});

【问题讨论】:

    标签: javascript foreach


    【解决方案1】:

    对键使用索引表示法。

    Object.keys(obj).forEach(function(k){
        console.log(k + ' - ' + obj[k]);
    });
    

    【讨论】:

      【解决方案2】:

      使用arrow functions循环遍历对象

      ES6

      Object.keys(myObj).forEach(key => {
          console.log(key + ' - ' + myObj[key]) // key - value
      })
      

      ES7

      Object.entries(myObj).forEach(([key, value]) => {
          console.log(key + ' - ' + value) // key - value
      })
      

      【讨论】:

      • 如果你有 ES7+,Object.entries 是最好的答案。谢谢!
      【解决方案3】:

      另一种简单的方法是使用以下语法遍历对象,保持对键和值的访问:

      for(var key in object){
        console.log(key + ' - ' + object[key])
      }
      

      所以你的:

      for(var key in obj){
        console.log(key + ' - ' + obj[key])
      }
      

      【讨论】:

      • 在这种情况下,使用hasOwnProperty 必要的,因为for...in 构造包括通过原型链继承的属性。
      【解决方案4】:

      假设 obj 是一个预先构造的对象(而不是 JSON 字符串),您可以通过以下方式实现:

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

      【讨论】:

      • hasOwnProperty 不是必需的,因为Object.keys 已经只包含自己的属性。 (MDN)
      • Doenst Object.keys() 确保只访问对象本身的属性?所以不需要hasOwnProperty?
      【解决方案5】:

      试试这样的:

      var prop;
      for(prop in obj) {
          if(!obj.hasOwnProperty(prop)) continue;
      
          console.log(prop + " - "+ obj[prop]);
      }
      

      【讨论】:

        【解决方案6】:

        我会这样做。 假设我有一个 JSON 电影...

        movies.forEach((obj) => {
          Object.entries(obj).forEach(([key, value]) => {
            console.log(`${key} ${value}`);
          });
        });
        

        【讨论】:

          【解决方案7】:

          forEachObject.entries() 组合使用。

          const WALLPAPERS = [{
            WALLPAPER_KEY: 'wallpaper.image',
            WALLPAPER_VALID_KEY: 'wallpaper.image.valid',
          }, {
            WALLPAPER_KEY: 'lockscreen.image',
            WALLPAPER_VALID_KEY: 'lockscreen.image.valid',
          }];
          
          WALLPAPERS.forEach((obj) => {
            for (const [key, value] of Object.entries(obj)) {
              console.log(`${key} - ${value}`);
            }
          });

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-27
            • 2014-07-12
            • 2020-06-28
            • 1970-01-01
            • 2016-09-21
            • 1970-01-01
            相关资源
            最近更新 更多