【问题标题】:javascript - sort by the order of a second arrayjavascript - 按第二个数组的顺序排序
【发布时间】:2010-08-13 00:07:59
【问题描述】:

给定:

var a1 = [{name:'Scott'}, {name:'John'}, {name:'Albert'}];
var sortOrder = ['John', 'Scott', 'Albert'];

如何根据第二个数组中指定的顺序对第一个数组(按属性)进行排序。

// result: [{name:'John'}, {name:'Scott'}, {name:'Albert'}]

谢谢。

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:
    a1.sort(function(a,b) {
      return (
        sortOrder.indexOf(a.name) < sortOrder.indexOf(b.name) ? -1 : 1
      );
    });
    

    【讨论】:

    • 那是我在打字的时候... +1
    • 这里唯一的问题是IE不支持indexOf(),所以你需要为它创建一个indexOf()函数:stellapower.net/content/javascript-support-and-arrayindexof-ie
    • @Gert G:要么这样,要么使用 Chrome Frame 让 IE “正常”工作;)
    • 它对我有用,但我必须更改为 a1.sort(function(a,b) { return (sortOrder.indexOf(a.name)
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多