【问题标题】:Can we combine regular for loops with for in [duplicate]我们可以将常规 for 循环与 for in 结合起来吗?
【发布时间】:2014-09-08 09:05:23
【问题描述】:

我很好奇,但 Google 没有在这方面提供帮助...

我们正在寻找一种整洁的方式来使用对象键(它是一个包含函数的对象),同时还可以干净地访问键名。

var obj={'key1':'val1','key2':'val2','key3':'val3'};

要在循环中获取所需的键名,我们这样做:编辑:这是错误的!

for(var i=0;i<obj.length;i++){
    console.log(Object.keys(obj)[i]);
    }

但是这种循环有可能吗?

for(var k in obj){
    //?
    }

我在使用 && 之前见过组合循环。 JavaScript 是否能够优雅地结合两者?

在不破坏标准循环的情况下,我得到的最接近的是:

var i=0;
for(var k in obj){
    console.log(Object.keys(obj)[i]);
    i++;
    }

但它并不优雅,也不是很有创新性,它更像是一种解决方法,因为 'i' 是在循环之外声明的。我们尝试过的所有其他内容都出错了。

【问题讨论】:

  • 您的第一个循环甚至无效。 obj.length 未定义,因为 obj,正如您定义的那样,是一个对象而不是数组。
  • 谢谢,我觉得我的大脑已经筋疲力尽了
  • @8DK 这发生了。别着急,继续……

标签: javascript for-loop


【解决方案1】:

如果您需要钥匙:

for(var k in obj) {
  console.log(k)
}

如果您需要这些值:

for(var k in obj) {
  console.log(obj[k])
}

【讨论】:

  • +1,我喜欢你回答的风格
【解决方案2】:

您是否要打印出键和值?

for(var k in obj){
    console.log(k,obj[k]);
}

【讨论】:

    【解决方案3】:

    或者:

    Object.keys(obj).forEach(function(key) { console.log(key); });
    

    【讨论】:

      【解决方案4】:

      如果我理解你的问题,这是最简单的事情。

      for(var k in obj){
          console.log(k);
      }
      

      【讨论】:

      • 为什么投反对票?不是问的吗?
      • (我也不是说它应该被投票...)
      • 嗯,这是一个非常好的答案。
      • 我知道!有些人讨厌这里!大声笑我一定很累。这太容易了,令人震惊! +1
      猜你喜欢
      • 2019-06-17
      • 2012-09-16
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多