簡體   English   中英

Javascript中帶條件的數組排序

[英]Array sorting with condition in Javascript

我需要按升序對數組進行排序,並將所有零放在最后。

例如 [0, 0, 0, 3, 2, 1] 需要排序為 [1, 2, 3, 0, 0, 0]。 這是我的代碼,我需要添加什么以確保所有零都在最后?

function sort_by_field(array, field){
                return array.sort(function(a, b){
                    if( a[field] > b[field] ){
                        return 1;
                    }
                    if( a[field] < b[field] ){
                        return -1;
                    }
                    return 0;
                });
            }

任何幫助將不勝感激。

你可以這樣做:

[0, 0, 0, 3, 2, 1].sort(function(a,b){ 
    if(a === 0) return 1;
    else if(b === 0) return -1;
    else return a - b;
});

在進行其他比較之前,只需檢查零的特殊情況。 所以比較函數可能如下所示:

function(a, b) {
    if (a === b)
        return 0;
    if (a === 0)
        return 1;
    else if (b === 0)
        return -1;

    //the rest of the comparison logic
}

對於某些排序算法來說,非常重要的是比較函數是超級一致的,所以這就是為什么我在一開始就比較兩者相等的額外麻煩。

您可以獲取虛假值的增量,然后按值排序。

 console.log([0, 0, 0, 3, 2, 1].sort((a, b) => !a - !b || a - b));

const sortArrByCondition = (arr, func) =>
  arr.sort((oA, oB) => func(oA, oB)? 1: func(oB, oA)? -1 : 0)

sortByCondition (arr, (a, b) => a > b);

sortByCondition適用於字符串、數字和布爾值,以及返回布爾值的更復雜的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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