簡體   English   中英

為什么 JavaScript 排序比較器 arguments 順序相反?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM