1

私はこのような配列を持っています:

[1, Stopped]
[2, Waiting]
[3, Finished]
[4, Stopped]
[5, Running]

番号はプログラムの ID で、テキストはプログラムのステータスです。この配列を次の順序で並べ替える必要があります。

['Error','Halted','Blocked','Finished','Waiting to Start','Waiting','Stopping','Running','Idle','Stopped','Opened','Ready'];

定義済みの順序を使用して配列をソートする方法を教えてもらえますか?

IE8 以外のすべてのブラウザで動作します。IE8で並べ替える方法を誰か教えてください

4

1 に答える 1

2

これを使用できます:

if (typeof Array.prototype.indexOf !== 'function') {
    Array.prototype.indexOf = function (el) {
        for (var i = 0; i < this.length; i += 1) {
            if (this[i] === el) return i;
        }
        return -1;
    }
}

var a = [[1, 'Stopped'],
[2, 'Waiting'],
[3, 'Finished'],
[4, 'Stopped'],
[5, 'Running']];
var order = ['Error','Halted','Blocked','Finished','Waiting to Start','Waiting','Stopping','Running','Idle','Stopped','Opened','Ready'];

a.sort(function (a, b) {
   return order.indexOf(a[1]) - order.indexOf(b[1]);
});
于 2013-04-15T09:13:32.503 に答える