循环通过javascript对象文字,但从中间开始

时间:2013-01-19 20:20:00

标签: javascript object

我正在寻找一种循环通过对象的方法,但是例如开始在中间或任何其他值,例如: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]);
}

2 个答案:

答案 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/