JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでオブジェクト内のnull・偽値(falsy)を「-」に一括置換する方法

JavaScriptでは、多くのキーを持つオブジェクトを受け取り、その中のすべての偽値(falsy value)をダッシュ「-」に置き換える関数を実装したい場面があります。この記事では、元のオブジェクトをそのまま走査し、偽値が格納されているキーを検出して、余分なメモリを消費することなく(in-placeで)「-」に置き換える方法を解説します。

JavaScriptにおける偽値(falsy)とは

実装の前に、JavaScriptで条件式の中で「偽」と評価される値を確認しておきましょう。以下の6つが代表的な偽値です。

  • false(真偽値)
  • '' / ""(空文字列)
  • null(意図的な「無」を表す値)
  • undefined(未定義の値)
  • 0(数値ゼロ)
  • NaN(Not a Number)

これら以外の値はすべて「真(truthy)」と評価されるため、否定演算子!を使えば偽値だけを簡単に判定できます。

実装例

const obj = {
    key1: 'Hello',
    key2: 'World',
    key3: '',
    key4: 45,
    key5: 'can i use arrays',
    key6: null,
    key7: 'fast n furious',
    key8: undefined,
    key9: '',
    key10: NaN,
};
const swapValue = (obj) => {
    Object.keys(obj).forEach(key => {
        if(!obj[key]){
            obj[key] = '-';
        }
    });
};
swapValue(obj);
console.log(obj);

コードのポイント

  • Object.keys(obj):オブジェクトの全キーを配列として取得します。
  • forEach:各キーに対して順番に処理を行います。
  • !obj[key]:値が偽値(null、undefined、空文字列、NaNなど)の場合にtrueになります。
  • obj[key] = '-':条件に合致した値だけを「-」で上書きします。新しいオブジェクトを作らないため、メモリ効率に優れています。

出力結果

コンソールには以下のように出力されます。偽値だった箇所(key3、key6、key8、key9、key10)だけが「-」に置き換わり、それ以外の値はそのまま保持されていることがわかります。

{
    key1: 'Hello',
    key2: 'World',
    key3: '-',
    key4: 45,
    key5: 'can i use arrays',
    key6: '-',
    key7: 'fast n furious',
    key8: '-',
    key9: '-',
    key10: '-'
}

注意点

この方法はシンプルで強力ですが、「0」も偽値として扱われる点には注意してください。数値の0は有効なデータとして保持したい場合は、if(!obj[key])ではなくif(obj[key] === null || obj[key] === undefined || obj[key] === '')のように、置き換えたい値を明示的に指定すると安全です。

  1. JavaScriptでnull・空のオブジェクトを含む配列に値を割り当てる方法

    JavaScriptでは、forEach()メソッドとObject.keys()メソッドを組み合わせることで、nullや空のオブジェクトを含む配列に対して効率的に値を割り当てることができます。本記事では、実際のコード例を交えながら、その具体的な実装方法をわかりやすく解説します。 サンプルコード 以下は、JavaScriptを使用してnull/空のオブジェクトを持つ配列に値を割り当てるコード例です。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&qu

  2. JavaScriptでテーブルにNULL値が挿入されるのを防ぐ方法

    テーブルにNULL値が挿入されるのを防ぐには、値を入力する際に条件チェックを行う必要があります。NULLをチェックする条件は以下のように記述します。while( !( yourVariableName1==null || yourVariableName2==null || yourVariableName3==null……N){ // yourStatement1 . . N }このロジックを使用することで、NULL値が挿入されることを確実に防ぐことができます。次に、forループを使ってNULL値なしでテーブルに値を挿入します。以下がそのコードです。サンプルコ