Javascript 分拣功能在IE 11中不起作用
我有一个非常简单的排序函数,它通过Javascript 分拣功能在IE 11中不起作用,javascript,internet-explorer,Javascript,Internet Explorer,我有一个非常简单的排序函数,它通过索引对对象进行排序: panoramas.sort((a, b) => { if (a.index > b.index) return 1 }) 输入: [ { index: 0 }, { index: 2 }, { index: 1 } ] 输出: [ { index: 1 }, { index: 2 }, { index: 3 } ] 该功能在Chrome和Firefox中工作,但在IE中不起作用(数组根本没有被
索引对对象进行排序
:
panoramas.sort((a, b) => {
if (a.index > b.index) return 1
})
输入:
[
{ index: 0 },
{ index: 2 },
{ index: 1 }
]
输出:
[
{ index: 1 },
{ index: 2 },
{ index: 3 }
]
该功能在Chrome和Firefox中工作,但在IE中不起作用(数组根本没有被排序)
我的功能有问题吗
排序函数应该为排序返回-1、0或1
对于@teemu指出的IE11不支持箭头函数的情况,您必须使用函数表达式:
排序函数应该为排序返回-1、0或1
对于@teemu指出的IE11不支持箭头函数的情况,您必须使用函数表达式:
我想它不会排序,因为在
a.index@MartinNyolt的情况下,函数没有显式的返回值。我应该如何更改代码来反映这一点?请参阅。panoramas.sort((a,b)=>a.index-b.index)
您的意思是IE更改对象属性的值吗?我的意思是,示例代码肯定不会在任何浏览器中对数组进行排序。另外请注意,IE不支持ES6箭头函数。我想它不会排序,因为您的函数在a.index@martinyolt的情况下没有显式的返回值。我应该如何更改代码以反映这一点?请参见。panoramas.sort((a,b)=>a.index-b.index)
您的意思是IE更改了对象属性的值吗?我的意思是,示例代码肯定不会在任何浏览器中对数组进行排序。还请注意,IE不支持ES6箭头函数。返回a.index-b.index
更简洁。thnx@MartinNyolt。我有详细的解决方案,因为我认为返回a更容易理解。index-b.index更简洁。thnx@MartinNyolt。有详细的解决方案,因为我认为它会更容易理解
// Your function tests for 'a.index > b.index'
// but it's missing the other cases, returning false (or 0)
panoramas.sort((a, b) => {
if (a.index > b.index) return 1;
if (a.index < b.index) return -1;
return 0;
})
panoramas.sort((a, b) => {
return a.index - b.index;
// but make sure only numbers are passed (to avoid NaN)
})
panoramas.sort(function(a, b) {
return a.index - b.index;
});