Javascript:通过数字索引而不是键值循环遍历对象

标签 javascript loops object nested

虽然使用 for(key in object) 循环对象很简单,但我想通过索引(如数组)而不是它的值来访问对象。

我有一个“星期几”对象,包括:

days: { sunday: "N", monday: "Y", tuesday: "N", wednesday: "Y", 
thursday: "N", friday: "Y", saturday: "N" }

我想使用一个循环遍历一周的七天 (0-6) 并检查该天对象是“Y”还是“N”(检查“天”对象的键 0(星期日)、1(星期一)、2、3 等处的值)

for (var i = 0; i < 7; i++) { }

我的问题可以用一堆 if 语句来解决 if i == 0 {//check sunday } else if i == 1 {//check monday } 或将我的对象操作成多个数组并从那里开始,但是这些都不是很优雅。有没有一种方法可以遍历 days 对象并通过键访问每个值(第一个为 0,第二个为 1,等等)?

最佳答案

以一致的顺序迭代对象的属性, 你别无选择,只能使用属性名称数组, 例如:

var daysList = [ 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday' ];

然后您可以遍历名称数组:

for (let i = 0; i < daysList.length; i++) {
    let day = daysList[i];
    // do what you need with days[day]
}

关于Javascript:通过数字索引而不是键值循环遍历对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47720871/

相关文章:

javascript - jQuery UI 自动完成

javascript - 蜘蛛猴和垃圾收集

python - 你能覆盖python中的循环名称吗

c++ - 将对象传递给模板构造函数或方法的正确方法是什么

javascript - 添加待办事项列表项后如何将其删除

javascript - 创建嵌套数组类型的巧妙方法

c - 如何在一个循环内完美地创建一个循环,同时又在另一个循环内创建一个循环?

C 条件后增量

javascript - 在 Javascript 中扩展对象

java - 检查类名不应包含特定文本