我正在寻找一种循环通过对象的方法,但是例如开始在中间或任何其他值,例如:Tue,Wen,Thu,Fri,Sat,Sun,Mon而不是Sun,Mon, Tue,Wen,Thu,Fri,Sat(作为示例中使用的对象)。
//基本周概述
daysByName = {
sunday : 'Sun',
monday : 'Mon',
tuesday : 'Tue',
wednesday : 'Wed',
thursday : 'Thu',
friday : 'Fri',
saturday : 'Sat'
}
//基本循环
for (var key in daysByName) {
console.log(daysByName[key]);
}
答案 0 :(得分:0)
您不能依赖对象中属性的顺序,结果可能取决于浏览器(例如按字母顺序重新排序的属性)。并且你不能依赖于...单独捕获属性,你需要添加一个hasOwnProperties()过滤器。
您有两种选择:
使用数组而不是对象
daysByName = [ {周日:'太阳'}, {星期一:'星期一', ... ]
在对象本身中输入索引:
周日:{缩写: “太阳”,指数:0}
答案 1 :(得分:-1)
您可以尝试这样的方法,其中startIndex是您要启动的startIndex。
daysByName = {
sunday : 'Sun',
monday : 'Mon',
tuesday : 'Tue',
wednesday : 'Wed',
thursday : 'Thu',
friday : 'Fri',
saturday : 'Sat'
}
// Obtain object length
var keys = [];
for (var key in daysByName) {
keys.push(key)
}
// Define start index
var startIndex = 4, count = 0;
for (var key in daysByName) {
// Index is made by the count (what you normally do) + the index. Module the max length of the object.
console.log(daysByName[ keys[ (count + startIndex) % (keys.length)] ]);
count++; // Don't forget to increase count.
}
这是一个小提琴:http://jsfiddle.net/MH7JJ/2/