0

学校から、宿題を記録したり、時間割を表示したりできる Web アプリを開発するように依頼されました。localStorage オブジェクトを使用して各宿題を保存し、それらを取得して多次元配列に入れます。

次のような配列があります:(タイトルなどのプレースホルダーが使用されています!)

1hvfkjdvhjh463574hdv
   0 : history
   1 : title
   2 : description
   3 : setdate
   4 : duedate
   5 : importance

1hft6ry4uyguy
   0 : art
   1 : title
   2 : description
   3 : setdate
   4 : duedate
   5 : importance

1ehfhhrewvfbjvds63
   0 : geography
   1 : title
   2 : description
   3 : setdate
   4 : duedate
   5 : importance

1 に続くランダムな文字は、localStorage オブジェクトのカテゴリ (1 は宿題 - 時間割などとは対照的) および宿題の一意の「id」を表します。

配列の並べ替え/順序付けを除いて、すべて正常に機能します。

以下の方法は機能しないようです。

homework.sort(function(a, b) {
    if (a[0] < b[0]) return  1;
    if (a[0] > b[0]) return -1;
    return 0;
});

for(var x in homework) {
    document.write(homework[x] + "<br />");
}

目的の効果は、for ループで、配列がレッスン、芸術、歴史、地理... によって順序付けられることです。

4

1 に答える 1

0

あなたのコメントであなたは言った

var i = 0, oJson = {}, sKey;
homework = new Array();
for (;sKey = window.localStorage.key(i); i++) {
    oJson[sKey] = JSON.parse(window.localStorage.getItem(sKey));
    if(sKey.substring(0,1) === "1") { homework[sKey] = oJson[sKey]; }
}

使用homework[sKey]するとは、リストのように配列に新しい項目を追加するのではなく、オブジェクトであるかのように配列にプロパティを追加することを意味します。これらのプロパティを並べ替えることはできません。

代わりhomeworkにフォームに項目を作成してみてください。[sKey, oJson[sKey]]

var i = 0, oJson = {}, sKey,
    homework = [];                             // Array literal
while (sKey = window.localStorage.key(i++)) {  // same loop using while
    oJson[sKey] = JSON.parse(window.localStorage.getItem(sKey));
    if(sKey.charAt(0) === "1")                 // test first char
        homework.push([sKey, oJson[sKey]]);    // Using `homework` as Array
}

配列項目をソートするときは、以前と同じように、最初のインデックスでソートする必要があります。

于 2013-07-13T15:58:43.603 に答える