[英]Why are JavaScript sort comparator arguments are in opposite order?
似乎很基本,但我找不到任何關於為什么會發生的信息。
我正在使用規范的MDN 示例對對象數組進行排序,並且似乎將元素傳遞到比較回調的順序是相反的順序。 例如
let items = [ { name: 'Edward', value: 21 }, { name: 'Sharpe', value: 37 }, { name: 'And', value: 45 }, { name: 'The', value: -12 }, { name: 'Magnetic', value: 13 }, { name: 'Zeros', value: 37 } ]; // sort by value items.sort(function (a, b) { console.log(a.name, b.name); return -1; // should keep the original order }); // getting // Sharpe Edward // And Sharpe // The And // Magnetic The // Zeros Magnetic
再次文件說:
如果 compareFunction(a, b) 返回小於 0,則保持 a 和 b 不變。
我錯過了什么?
規范說:
如果 comparefn 不是未定義的並且不是此數組元素的一致比較 function(見下文),則排序順序是實現定義的。
這正是你的情況。 您的 function 不一致,因為它總是返回 -1 而沒有實際比較兩個元素,因此您不應該期望結果是一致的(並且您可能會發現瀏覽器之間的差異)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.