JavaScript nasted 默认参数

JavaScript nasted default parameters

假设我想处理集合 array 中的一些 属性 x 个对象。但是集合可能包含没有这样 属性 甚至 undefined 的对象。例如

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

这个想法是用默认参数保护我自己免受这种边缘情况的影响。让它成为 0。我试图解决这个问题

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

但它在 未定义 上失败了。有什么方法可以使用默认参数和解构来解决这个问题,而无需在 map 函数中编写 check/set 代码?

您可以在 .map 之前使用 .filter 以清除所有 falsy 值,例如 null0''false

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

Example

MDN中有很好的描述

Default function parameters allow formal parameters to be initialized with default values if no value or undefined is passed.

所以 null 是值。所以如果你将 null 传递给函数默认值不使用,例如

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

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

Example

你可以给默认对象一个默认值

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