javascript - for let of 循环不起作用?

标签 javascript loops for-loop let

当我使用 for in 循环时,它起作用了,而 for of 循环什么也得不到:( 这是我的代码

'use strict'

var match_table = [
  {'project': 'Laveral', 'template': 'Blade'},
  {'project': 'Ember.js', 'template': 'Handlebars'},
  {'project': 'Meteor', 'template': 'Handlebars'},
];

// count project number by template
var templateMap = new Array();
match_table.forEach(function(listItem){
  var template = listItem['template'];
  if (!templateMap[template]) {
    templateMap[template] = new Object();
  }
  templateMap[template]['name'] = template;
  if (templateMap[template]['count']) {
    templateMap[template]['count']++;
  } else {
    templateMap[template]['count'] = 1;
  }
});

//console.log(templateMap);

// for loop fails
for (let value of templateMap) {
  console.log(value);
}

templateMap.forEach(function(item) {
  console.log(item);
})

同样forEach也不输出任何东西~?!

最佳答案

for-of 无法遍历对象(因为按照标准它们不可迭代)。

所以你要么必须使用旧的for-in

使用非标准化尚未Object.entries() :

for (const [key, value] of Object.entries(obj)) {
    console.log(key, value);
}

templateMap 在您的例子中是一个对象,而不是数组,因为您将字符串键分配给它(并且 JS 数组索引在 [0; 2^32-1) 范围)。

关于javascript - for let of 循环不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35190231/

相关文章:

javascript - 为什么jquery分离元素会导致表单提交?

java - 如何将两个数组列表按升序合并为一个

python - 计算 Pandas 地理密度的有效方法?

python - Python 3 中更快的 for 循环

python - 如何使用 `openpyxl` 库在 Excel 中的合并单元格中写入?

javascript - 使用 Javascript 数组(或对象)的单位转换器

c# - JQuery + Asp.Net MVC,传递 float

c++ - "Executing"没有递归的语句体

python - 学习曲线图保持测试数据恒定

javascript - 更改选项卡上的输入值