1. ホーム
  2. javascript

[解決済み] null 値が常に最後に来るように配列を並べ替える

2023-03-27 05:41:43

質問

文字列の配列をソートしたいのですが、NULLが常に最後になるようにしたいのです。例えば、配列が

var arr = [a, b, null, d, null]

昇順でソートする場合、次のようにソートされる必要があります。 [a, b, d, null, null] のようにソートされ、降順にソートされる場合は、次のようにソートされる必要があります。 [d, b, a, null, null] .

これは可能ですか?私は下にある解決策を試しましたが、私が必要とするものとは全く違います。

どのように文字列と数値を比較することができますか(負の値を尊重し、NULLは常に最後とする)?

どのように解決するのですか?

チェックアウト .sort() で、カスタムソートでやってみましょう。 例

function alphabetically(ascending) {

  return function (a, b) {

    // equal items sort equally
    if (a === b) {
        return 0;
    }
    // nulls sort after anything else
    else if (a === null) {
        return 1;
    }
    else if (b === null) {
        return -1;
    }
    // otherwise, if we're ascending, lowest sorts first
    else if (ascending) {
        return a < b ? -1 : 1;
    }
    // if descending, highest sorts first
    else { 
        return a < b ? 1 : -1;
    }

  };

}

var arr = [null, 'a', 'b', null, 'd'];

console.log(arr.sort(alphabetically(true)));
console.log(arr.sort(alphabetically(false)));