循环使用对象for ... in

时间:2017-02-19 08:50:41

标签: javascript arrays loops for-loop

javascript初学者。 “为...而在......”问题。

应用于数组对象,但无法定义天数。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Loops and Control</title>
</head>

<body>
<script>
  var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
  var message = "";
  for (i in days) {
  message += 'Day ' + i + ' is' 
  day[i] + '\n';
  }
	alert(message);
	</script>
</body>
</html>

4 个答案:

答案 0 :(得分:1)

您应该使用for循环来遍历数组。不建议将For in用于数组。

否则您也可以使用forEach

&#13;
&#13;
var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
var message = [];

for(var i = 0; i < days.length; i++) {
   message.push('Day', (i + 1), 'is', days[i] + '\n');
}

alert(message.join(' '));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

那里有几个问题:

  1. 您尝试使用day[i],但没有day变量(称为days)。
  2. for-in不适用于循环数组条目; details of your various options here
  3. 您在+
  4. 之后错过了' is'
  5. 您的代码正在成为The Horror of Implicit Globals 的牺牲品(这是我贫血小博客上的帖子) - 您需要声明i
  6. 所以:

    var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    var message = "";
    for (var i = 0; i < days.length; ++i) {
      message += 'Day ' + i + ' is ' + days[i] + '\n';
    }
    alert(message);

    或者,数组有几个可用于对其条目执行操作的功能。有forEach,循环遍历条目:

    var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    var message = "";
    days.forEach(function(day, i) {
      message += 'Day ' + i + ' is ' + days[i] + '\n';
    });
    alert(message);

    ...或reduce,正是针对这个用例:从数组的条目中构建结果:

    var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    var message = days.reduce(function(m, day, i) {
      return m + 'Day ' + i + ' is ' + days[i] + '\n';
    }, "");
    alert(message);

答案 2 :(得分:0)

数组的名称在for内拼写错误。它应该是:

for (i in days) {
    message += 'Day ' + i + ' is' + days[i] + '\n';
}

i将获取索引的值,并使用它来访问原始数组

答案 3 :(得分:0)

您可以使用数组的reduce方法实现此目的

&#13;
&#13;
const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const newLine = (acc, curr) => acc += curr + '\n';
const message = days.reduce(newLine, '');
console.log(message)
&#13;
&#13;
&#13;