【问题标题】:looping with for ( in ) on Javascript does not match ColdFusion在 Javascript 上使用 for ( in ) 循环与 ColdFusion 不匹配
【发布时间】:2019-05-02 19:03:12
【问题描述】:

在 ColdFusion 中,我可以做到这一点

<cfscript>
  favorites = [{"broker_label":"spectra"}]; 

  for (afav in favorites)   {
    writedump(afav);
  }
</cfscript>

我得到数组中的每一行。

如果我在 Javascript 中尝试这个

favorites = [{"broker_label":"spectra"}];   

for (var afav in favorites) {
  console.log(JSON.stringify(afav));
}

我得到的只是 0,或者准确地说。 "\"0\""

发生了什么事?

【问题讨论】:

  • for ... in ... 循环遍历项目的键。 for ... of ... 循环遍历值
  • @GetOffMyLawn,这是错字。修复它

标签: javascript arrays coldfusion cfml coldfusion-2016


【解决方案1】:

如果你想迭代数组的值,你可以使用for…ofarray.forEach()

favorites = [{"broker_label":"spectra"}]; 

for (let fav of favorites)   {
            console.log(JSON.stringify(fav));
}

// or:

favorites.forEach(elem => console.log(JSON.stringify(elem)))

for…in 迭代属性,在数组的情况下是索引。请注意,当顺序很重要时,不建议将 for…in 与数组一起使用:

来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

注意:for...in 不应用于迭代索引顺序很重要的数组。

【讨论】:

    【解决方案2】:

    ColdFusion 返回数组中的每个元素。

    Javascript 返回数组中元素的索引。为了得到类似的结果,我不得不

     for (var afav in favorites)    {
                console.log(JSON.stringify(favorites[afav]));
     }
    

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多