2013-01-19 40 views
0

我正在尋找一種方法來循環對象,但例如在中間或任何其他值處開始,例如:Tue,Wen,Thu,Fri,星期六,星期日,星期一,而不是星期一,星期一,星期二,星期四,星期五,星期五,星期六(作爲示例中使用的對象)。通過JavaScript對象字面值循環但在中間開始

//基本一週綜述

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

沒有*命令*,其中一個對象循環。因此,對於您確切的問題將沒有準確的答案。您必須選擇一個實現,將對象存儲在一個數組中。 – Amberlamps

回答

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

+0

你的小提琴不工作,但代碼是,謝謝! – user759235

+0

@ user759235:記住不要依靠循環對象 – Amberlamps

+1

由於對象屬性沒有順序,此答案不正確。 – Christophe

0

你不能在一個對象依賴屬性的順序的,其結果可能取決於瀏覽器(按字母順序重新排序,例如性能)。你不能單獨依靠捕獲屬性,你需要添加一個hasOwnProperties()過濾器。

您有兩種選擇:

  • 使用,而不是一個對象

    daysByName = [ {週日: '太陽'}的陣列, {星期一: '星期一'}, 。 .. ]

  • 進入在對象本身的索引:

    星期日:{縮寫:「太陽報」,索引號:0}