gpt4 book ai didi

javascript - 排序功能在 IE 11 中不起作用

转载 作者:行者123 更新时间:2023-11-28 18:24:31 26 4
gpt4 key购买 nike

我有一个非常简单的排序函数,可以按索引对对象进行排序:

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 中无效(数组根本没有排序。)

我的功能有问题吗?

最佳答案

The sorting function should return -1, 0 or 1 for the ordering.

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

来自 Sorting in JavaScript: Shouldn't returning a boolean be enough for a comparison function?

  • > 0a被认为大于 b并且应该在它之后排序
  • == 0a被认为等于 b哪个先出现并不重要
  • < 0a被认为小于 b并且应该排在它之前

对于数字,您可以使用更简洁的方法:

panoramas.sort((a, b) => {
return a.index - b.index;
// but make sure only numbers are passed (to avoid NaN)
})
<小时/>

对于 IE11 正如@teemu 所指出的不支持箭头函数,您必须使用函数表达式:

<小时/>
panoramas.sort(function(a, b) {
return a.index - b.index;
});

关于javascript - 排序功能在 IE 11 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com