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

在IE8中使用Javascript中的另一个数组对数组进行排序,javascript,arrays,sorting,internet-explorer-8,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外,我对其

我有这样一个数组:

[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中排序吗?

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

可能的解决办法:

  • 使用jQuery(或类似的库),它可以直接替换
    array.indexOf()

  • 使用polyfill库向阵列原型添加替换
    .indexOf
    方法。(其他当然可以通过谷歌获得)

  • 重写代码,使用简单的循环搜索整个数组


  • 你试过调试it IE开发者工具吗?看看这里-。您是否为indexOf功能实现了一个变通方法<代码>数组.indexOf()在IE8中不受支持。特别是,您需要使用所谓的“polyfill”来修补缺少的功能。这里有一个你可以复制/粘贴的:我看过tha,但我不知道如何在我的代码中实现它。每次我尝试实现它时,所有浏览器都会停止工作。@user1350637:那么您就犯了一些基本语法错误。查看开发人员友好型浏览器的控制台中的错误消息。