[英]Can someone explain the difference between these JS functions one with callback and other no with callback
我們可以對數組進行排序:
1。
var values = [0,3,2,5,7,4,8];
console.log(values.sort());
2。
var values = [0,3,2,5,7,4,8];
values.sort(function(v1,v2){
return v1-v2;
});
console.log(values);
兩者都提供相同的輸出,但是哪個更快或更佳?
除非數組中的所有數字都具有相同的位數,否則它們不是等效的。 默認的sort()
比較函數將數組元素作為字符串而不是數字進行比較,並且字符串"10"
小於"2"
。 如果將2位數字添加到數組中,則可以看到差異。
var values = [0,3,2,5,7,4,8, 10]; console.log(JSON.stringify(values.sort())); console.log(JSON.stringify(values.sort(function(v1,v2){ return v1-v2; })));
比較它們的性能似乎毫無意義,因為它們做的是不同的事情,並且第一種形式很可能是錯誤的。
因此,第一個.sort()
調用使用默認的比較器,可以在本文檔中找到該默認的比較器。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
“如果未提供compareFunction,則通過將元素轉換為字符串並按Unicode代碼點順序比較字符串來對元素進行排序。”
第二種使用您的自定義比較器,它執行整數比較而不是字符串比較。
第二個應該更快,因為它不需要在比較之上進行字符串轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.