因为循环不起作用?

Wei*_*Lin 1 javascript loops for-loop let

当我在循环中使用时,它可以工作,并且对于循环只是没有得到任何东西:(这是我的代码

'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);
})
Run Code Online (Sandbox Code Playgroud)

也forEach不输出任何东西〜?!

zer*_*kms 5

for-of 不能遍历对象(因为它们不能按标准迭代).

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

要么

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

for (const [key, value] of Object.entries(obj)) {
    console.log(key, value);
}
Run Code Online (Sandbox Code Playgroud)

templateMap在你的情况下是一个对象,而不是一个数组,因为你将字符串键分配给它(并且JS数组索引是范围[0; 2^32-1)内的数字).