0
0

More than 1 year has passed since last update.

JavaScriptでオブジェクト初期化時に特定のプロパティを条件によって省略する

Posted at

要旨

オブジェクト初期化で条件によってプロパティを省略したい場合は以下のように書ける。

function sample(foo, bar, baz) {
    return {
        ...foo ? { foo } : {},
        ...bar ? { bar } : {},
        ...baz ? { baz } : {},
    };
}

console.log(sample('hoge')) // { foo: 'hoge' }
console.log(sample('hoge', 'fuga', 'piyo')) // { foo: 'hoge', bar: 'fuga', baz: 'piyo' }

三項演算子の結果をスプレット構文で戻り値となるオブジェクトに展開している。

補遺

なお、以下の実装と得られる結果は同じである。

function sample(foo, bar, baz) {
    const obj = new Object();
    if (foo) obj.foo = foo;
    if (bar) obj.bar = bar;
    if (baz) obj.baz = baz;
    return obj;
}

だが、この実装には個人的に次のような不満があった。

  • ワンライナーではない
  • オブジェクト初期化後にプロパティを書き換えている
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0