gpt4 book ai didi

javascript - 10 个元素的数组正在排序,但 100 个元素的数组不是

转载 作者:行者123 更新时间:2023-11-30 11:35:32 26 4
gpt4 key购买 nike

我有一个带有计算属性的 Knockout 应用

  this.sortedItems = ko.computed(function() {
return self.allItems().sort(function(a, b) {
return a.name() > b.name();
});
}, this);

我对这个包含 10 个数组项的应用程序很感兴趣 http://jsfiddle.net/GSvnh/5925/一切都在开始时进行排序,并且在项目更改时进行排序 - 按预期工作。

然后我有完全相同的代码,但是有 100 个项目并且那里没有任何排序 - 它既不在开始时排序也不在项目更改时排序 http://jsfiddle.net/GSvnh/5926/

这可能是什么原因造成的?

最佳答案

对于数字排序,返回差值,因为这是正确的方法。

return self.allItems().sort(function(a, b) {
return a.name() -b.name();
});

Updated fiddle link.


检查以下摘自 MDN docs 的描述:

如果提供了 compareFunction,数组元素将根据比较函数的返回值进行排序。如果 a 和 b 是被比较的两个元素,则:

  • 如果 compareFunction(a, b) 小于 0,则将 a 排序到低于 b 的索引,即 a 在前。
  • 如果 compareFunction(a, b) 返回 0,则保持 a 和 b 彼此不变,但对所有不同元素进行排序。注意:ECMAscript 标准不保证这种行为,因此并非所有浏览器(例如至少可追溯到 2003 年的 Mozilla 版本)都遵守这一点。
  • 如果 compareFunction(a, b) 大于 0,则将 b 排序为比 a 低的索引。
  • compareFunction(a, b) 在给定一对特定的元素 a 和 b 作为其两个参数时,必须始终返回相同的值。如果返回不一致的结果,则排序顺序未定义。

关于javascript - 10 个元素的数组正在排序,但 100 个元素的数组不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44606793/

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