4

コレクションarray内のオブジェクトのプロパティxを処理したいとしましょう。ただし、コレクションには、そのようなプロパティのないオブジェクトや未定義のオブジェクトが含まれる場合があります。例えば

let array = [
  {x: 1},
  {x: 2},
  {},
  {x: 4},
  undefined
]

アイデアは、デフォルトのパラメーターを使用して、そのようなエッジケースから自分自身を保護することです。0としましょう。私はこれを次のように解決しようとしていました

array.map(({x: x = 0}) => process(x))

しかし、undefinedで失敗します。マップ関数内にチェック/セット コードを記述せずに、デフォルト パラメータとデストラクチャリングを使用してこの問題を解決する方法はありますか?

4

2 に答える 2

2

デフォルトオブジェクトにデフォルト値を与えることができます

array.map(({x : x = 0} = 0) => process(x));
于 2015-11-13T13:54:17.610 に答える
1

、、、のようなすべての値をきれいにするために.filter前に使用できます。.mapfalsynull0''false

array = array
    .filter((el) => el)
    .map(({x: x = 0}) => process(x));

Example

良いMDN説明があります

既定の関数パラメーターを使用すると、値が渡されないか未定義の値が渡された場合に、仮パラメーターを既定値で初期化できます。

そのため、関数nullに渡す場合、nullデフォルト値は使用されません。たとえば、

function test(x = 10) {
    console.log(x);
}

test(undefined); // 10
test();          // 10
test(null);      // null
test(0);         // 0
test('');        // ''

Example

于 2015-11-13T13:40:11.130 に答える