3 回答

TA貢獻1803條經(jīng)驗 獲得超6個贊
在sort回調(diào)中,您收到兩個參數(shù)(我通常稱它們a為 和b)。a如果應(yīng)該在 之前返回一個負數(shù)b,如果無關(guān)緊要則返回 0(出于排序目的它們是相同的),如果a應(yīng)該在 之后返回一個正數(shù)b。
在您的情況下,由于 -1 最后出現(xiàn)(您說過沒有其他負數(shù)),您只需要對其進行特殊處理:
array.sort((a, b) => {
if (a === -1) { // < 0 would also work, since there aren't any others
return 1;
}
if (b === -1) { // "
return -1;
}
return a- b;
});
現(xiàn)場示例:
顯示代碼片段
那可以更簡潔,當然,我寫成上面主要是為了最大程度的清楚。但是例如:
array.sort((a, b) => a === -1 ? 1 : b === -1 ? -1 : a - b);
就我個人而言,我更喜歡稍微冗長一點。但... :-)

TA貢獻1880條經(jīng)驗 獲得超4個贊
您可以檢查是否小于零并將其余的升序排序。
var array = [1, 85, -1, -1, 25, 0];
array.sort((a, b) => (a < 0) - (b < 0) || a - b);
console.log(array);

TA貢獻1816條經(jīng)驗 獲得超6個贊
您可以sort()像往常一樣,然后使用and明確地將-1s 移到末尾。splice()push()
let arr = [1, 85, -1, -1, 25, 0];
arr.sort((a, b) => a - b);
let idx = arr.findIndex(a => a != -1);
arr.push(...arr.splice(0, idx));
console.log(arr);
添加回答
舉報