【问题标题】:Ordering a Multi-Dimensional Array with Letters and Numbers用字母和数字排序多维数组
【发布时间】:2013-07-16 03:58:01
【问题描述】:

我的学校让我开发一个可以记录作业,显示时间表等的网络应用程序。我使用 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循环中,数组按课程排序,Art, History, Geography...

【问题讨论】:

  • 我们可以看看你的阵列吗??
  • 第一个评论框基本就是数组。 1 后跟随机字符为第一级,每一级以下为第二级。
  • 数组没有名称和值??
  • 好吧,这里是 chrome 开发者控制台中部分数组截图的链接:s7.postimg.org/xb32rl05n/array.jpg 抱歉让您感到困惑。
  • 不,不是控制台中的那个...告诉我们你是如何定义你的数组的!!!

标签: javascript arrays local-storage


【解决方案1】:

在你的评论中你说

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
}

现在,当您对数组项进行排序时,您需要按第一个索引进行排序,就像您之前尝试的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多