我正在嘗試 JavaScript 中的 sort() 方法。檔案說回傳值應該是> 0sort bbefore a。我有以下代碼來反轉字串陣列,并將回傳值作為正整數,我認為應該以相反的順序對陣列進行排序:
let nums = ["x", "y", "z"];
nums.sort((a, b) => 1); // returning a positive number to sort b before a
console.log(nums)
但是,當我執行代碼時,輸??出是:
[ 'x', 'y', 'z' ] // not reversed at all
[ 'z', 'y', 'x' ]但是當我將回傳值設定為負數時,代碼確實給了我預期的值。對此有解釋嗎?難道我做錯了什么?
uj5u.com熱心網友回復:
在這里,您不是有條件地結帳a,b哪個更大或更小。回傳 1 將評估第一個引數 fromsort((a, b)是否更大。它會回傳完全相同的陣列。
您最好將它們與排序回呼函式中的值進行比較,并根據值回傳 1 或 -1。
這將導致升序。
let nums = ["x", "y", "z"];
nums.sort((a, b) => a > b ? 1 : -1);
console.log(nums)
切換返??回值以獲取降序。
let nums = ["x", "y", "z"];
nums.sort((a, b) => a > b ? -1 : 1);
console.log(nums)
uj5u.com熱心網友回復:
發生這種情況是因為callbackofsort方法需要兩個引數,但它們并不對應于人們認為的第一個第二個第三個......等等......元素,但相反,a是第二個元素,b是第一個元素,所以當它說大于 1 的數字b就是a它的作用:
const nums = ['x', 'y', 'z'];
nums.sort((a, b) => {
console.log(a,b) // yx -zy
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471916.html
標籤:javascript 排序
