【问题标题】:JavaScript switch case: anyway to force the order of the elements as they are written out?JavaScript switch case:无论如何强制元素在写出时的顺序?
【发布时间】:2010-08-16 20:16:07
【问题描述】:

我已将结果返回到 div 边栏中的 Google Mapping 应用程序。结果是属于客户希望按特定顺序返回的类别的企业名称。不幸的是,这不是一个直接的 alpha 排序。例如,一个类别以 F 开头,第二个类别以 C 开头,最后三个是 A。

所以我需要我的开关,它可以工作,但自然会坚持以 alpha 排序(因为它们是从数据库返回的)顺序删除值,因为这就是它遇到它们的方式。最好的设置方法是什么,以便我可以按照客户要求的任意顺序获取我的首选类别及其关联公司名称?

谢谢!

【问题讨论】:

    标签: javascript switch-statement case


    【解决方案1】:

    你能按照你想要的顺序遍历这些类别,并找到它所关联的对象吗?

    例如(伪代码)

    var categories = [ 'F', 'C', 'A1', 'A2', 'A3' ].map(function (category) {
        return businesses.filter(function (business) {
            return business.category === category;
        });
    });
    

    【讨论】:

    • 我会试一试。所以基本上,我将我的类别列表返回到那里的 var 中。我明白了。其余的我必须弄清楚如何最好地用 JS 编写它以便它工作,除非你也知道这一点。例如,我以前没有使用过 JS 过滤器等。但我会努力将其翻译成 js。我有一种感觉,它会看起来像这样。
    • 这个伪代码看起来很像有效的 Javascript。我的水晶球说翻译会很容易
    • @Lynn,如果您使用的是框架,它可能会提供映射和过滤功能。如果不是,则 map 遍历数组,将元素替换为函数的返回值。过滤器遍历数组并删除函数返回 false 的元素。
    • 好的,感谢@strager 的解释(显然,我仍在加快一些 JS 的速度)并感谢@MooGoo 关注它并让我知道它比我想象的更多。这些天我主要是 PHPer,但我正在努力让自己在前端 js 编码方面得到更多的教育。
    • 好吧,我将不得不承认在实施这个过程中失败了。如何从数据库中获取我的类别列表以映射到此函数并将值返回到 switch case 语句以按我想要的顺序写出?
    【解决方案2】:

    所以这里给出的答案中缺少的步骤是如何实现地图以及如何实现 JS sn-p。无论如何,我最终不得不将其作为一个单独的问题提出,并最终得到了一个很好的工作示例作为答案。

    拉斯写道:

    给出的代码看起来最有可能是 使用 jQuery JavaScript 库 它具有一些有用的功能,例如 map() 用于操作数组。

    如果我们回到最初的问题, 您需要订购类别列表 根据客户的喜好。 让我们创建一个对象字面量 映射排序

    var map = {
         F : 5,
         C : 3,
         A1 : 1,
         A2 : 4,
         A3 : 2
     }
    

    我们可以使用这个映射对数组进行排序 使用排序方法

     var array = ['F', 'C', 'A1', 'A2', 'A3'];
    
     array.sort(function(a,b) {
         return map[a] - map[b];
     });
     This returns us ["A1", "A3", "C", "A2", "F"]
    

    无论如何,我想确保此主题包含在此线程中,以供将来搜索此问题的任何人或现在关注此问题的任何人使用。感谢大家的意见!

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      相关资源
      最近更新 更多