在IE8中使用Javascript中的另一个数组对数组进行排序

时间:2013-05-30 08:11:49

标签: javascript arrays sorting internet-explorer-8

我有一个这样的数组:

[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之外的其他所有浏览器:

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]);
});

除IE8外,它适用于所有不同的浏览器。谁能告诉我如何在IE8中对它进行排序?

1 个答案:

答案 0 :(得分:2)

IE8不支持array.indexOf()。你需要找到一个替代方案。

可能的解决方案:

  1. 使用jQuery(或类似的库),它可以$.inArray()作为array.indexOf()的直接替代。

  2. 使用polyfill库将替换.indexOf方法添加到Array原型中。 Here's one possible option。 (其他人当然可以通过谷歌获得)

  3. 重写您的代码,使用简单的循环搜索数组。