如何对数组中的元素进行排序,包含字符串和整数?

XT_*_*ova 0 javascript jquery

假设我有一个包含(随机)整数和字符串元素的数组:

var array = ["T", 5, 2, 9, "A"];
Run Code Online (Sandbox Code Playgroud)

可能的元素或参考是:

var ref = ["A", "K", "Q", "J", "T", 9, 8, 7, 6, 5, 4, 3, 2];
Run Code Online (Sandbox Code Playgroud)

A是最高(最有价值),K是第二最有价值,等等.正如你们大多数人所看到的,这代表了一副牌中的不同牌.

我应该如何进行array上述排序,以获得以下输出:

array = ["A", "T", 9, 5, 2];
Run Code Online (Sandbox Code Playgroud)

由于我正在尝试学习javascript,我更喜欢纯粹的javascript解决方案,但我也想知道是否有一个jQuery函数来完成这个任务?

Vis*_*ioN 7

这是一种可能的简短方法:

array.sort(function(a, b) {
    return ref.indexOf(a) - ref.indexOf(b);
});
Run Code Online (Sandbox Code Playgroud)

注意:请注意该Array.prototype.indexOf方法限制了浏览器兼容性,因此如果需要,请使用填充程序.但是jQuery有自己的跨浏览器实现$.inArray().