0

オブジェクトをループする方法を探していますが、たとえば、中間またはその他の値のどこかで開始します。たとえば、Sun、Mon、Tue、WenではなくTue、Wen、Thu、Fri、Sat、Sun、Monです。 、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]);
}
4

2 に答える 2

0

オブジェクト内のプロパティの順序に依存することはできず、結果はブラウザーによって異なる場合があります (たとえば、アルファベット順に並べ替えられたプロパティ)。また、プロパティを取得するために for...in だけに頼ることはできません。hasOwnProperties() フィルターを追加する必要があります。

2 つの選択肢があります。

  • オブジェクトの代わりに配列を使用する

    daysByName = [ {日曜日: '日曜日'}, {月曜日: '月曜日'}, ... ]

  • オブジェクト自体にインデックスを入力します。

    日曜日:{abbreviation:"Sun",index:0}

于 2013-01-19T20:50:20.050 に答える
-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/

于 2013-01-19T20:22:16.567 に答える