javascript - js中数组从零开始递增

标签 javascript arrays alert increment

我有以下js脚本。它使用警报来计算一周中的天数,第 0 天星期一...第 6 天星期六。我从 0 开始,因为这是 js。

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

我正在尝试编辑 i,使其从 1 开始计数。

在我的 for ...in 循环中,当我增加 i (i++) 时,我得到第 6 天未定义(周六)。当我递减 i (i--) 时,我得到第 0 天未定义。

我的问题是

1) 未定义结果背后的逻辑是什么? i 只是计数机制。 days 是数组

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

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

2)我应该如何编写这个脚本以使其读取第 1 天是周日...第 7 天是周六(如果可以完成)。

最佳答案

使用带索引的 for 循环:

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

或者使用.forEach:

days.forEach(function(day, dayNumber) {
  message += 'Day ' + (dayNumber + 1) +' is ' + day +'\n';
});

您的代码使用了 ++-- 运算符,它们实际上更改了 i 的值。这些运算符就是用于此目的的。这就是为什么您会得到 undefined 值,因为对 days[i] 的后续引用可以在 (-1) 之前或之后 ( 7) 数组的开头或结尾。子表达式 i + 1(或者,在 .forEach() 版本中,dayNumber + 1)更改变量的值。

当您迭代数组对象的数字索引属性时,通常不应使用 for ... in 循环。 JavaScript(严格来说)甚至不保证 for ... in 的迭代顺序将按照任何特定顺序。

关于javascript - js中数组从零开始递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936223/

相关文章:

javascript - Fabric.js 在初始化后将我的 Canvas 大小更改为 300x150

javascript - mongo 根据条件聚合来过滤文档以进行版本控制

javascript - 为什么在使用类时这不适用于 id

java - 显示数组排序

python - 我怎样才能在python中获得-ve数的无符号大小

javascript - Angular NGRX 在从效果中调度 Action 时无法将数据传递给 reducer 。出现错误 - TypeError : Cannot freeze

JavaScript 数组 : Not functioning past 500 elements

用于短信和电子邮件通知服务的 C# 代码

javascript - 打印警报窗口中对象的值

javascript - 在 Svelte 中导航之前提醒未保存的更改