【发布时间】:2021-06-24 09:21:37
【问题描述】:
我在 Chrome 和 Firefox 中运行基本排序,我看到两个不同的结果。 Firefox 似乎忽略了值。
const data = [
{
"id": "a"
},
{
"id": "b"
},
{
"id": "c"
},
{
"id": "d"
},
{
"id": "e"
},
{
"id": "f"
},
{
"id": "g"
},
{
"id": "h"
}
]
const sorted = data.slice().sort((project) => {
console.log(project.id)
return project.id === 'h' ? -1 : 0;
})
console.log(sorted[0].id === 'h');
结果:
火狐-false
Chrome - true
Firefox 中是否存在错误?
【问题讨论】:
-
如果您对一个集合进行排序,您应该将该集合的两个元素相互比较。这也是为什么
.sort()的回调应该接受两个参数的原因。 -
请阅读documentation。
-
如何回答这个问题?你会看到 Chrome 返回 true 而 Firefox 不是
-
我认为具体的排序算法是依赖于实现的,所以不能保证在不同的浏览器中以相同的顺序访问值。因此,如果您不正确地使用 API,您可能会得到不同的结果。
标签: javascript google-chrome firefox