函数的默认解构参数
Default descontructed parameter on function
我正在尝试使用适用于两种情况的函数,它可以遍历数组中对象的键或数组值本身。所以这打印得很好:
const arr1 = [{
car: 'audi'
},{
car: 'bmw'
}]
const printCars = arr1.map(({ car }) => console.log(car))
// audi
// bmw
但我不知道如何使用相同函数的默认参数来允许简单的数组
const arr2 = ['audi', 'bmw'];
const printCars = arr2.map(({ car }) => console.log(car));
// Obviously car is undefined
我想知道我该怎么做
const arr = ['audi', 'bmw'];
const printCars = arr.map(({ car } = car) => console.log(car));
// audi
// bmw
我认为仅在参数列表中没有执行此操作的好方法。可以在函数的第一行解构,给整项赋一个默认值:
const arr2 = ['audi', 'bmw'];
arr2.forEach((item) => {
const { car = item } = item;
console.log(car);
});
请注意,由于您不是在创建新数组,而是在执行 副作用 (console.log
),因此您不应使用 .map
-相反,使用 forEach
。 .map
仅适用于需要将一个数组的每个元素转换为不同返回数组中的新元素的情况。
可能仅使用参数列表将适当的值放入car
变量中,但它非常丑陋并且滥用默认参数,我'将其放在下面仅供参考(请不要使用它):
const arr2 = ['audi', 'bmw'];
arr2.forEach((item, i, arr, { car = item } = item) => console.log(car));
上面的工作是因为 forEach
只接受 3 个参数,所以第 4 个参数是 undefined
,所以你可以使用默认参数有条件地将一些东西放入 car
标识符中。
我正在尝试使用适用于两种情况的函数,它可以遍历数组中对象的键或数组值本身。所以这打印得很好:
const arr1 = [{
car: 'audi'
},{
car: 'bmw'
}]
const printCars = arr1.map(({ car }) => console.log(car))
// audi
// bmw
但我不知道如何使用相同函数的默认参数来允许简单的数组
const arr2 = ['audi', 'bmw'];
const printCars = arr2.map(({ car }) => console.log(car));
// Obviously car is undefined
我想知道我该怎么做
const arr = ['audi', 'bmw'];
const printCars = arr.map(({ car } = car) => console.log(car));
// audi
// bmw
我认为仅在参数列表中没有执行此操作的好方法。可以在函数的第一行解构,给整项赋一个默认值:
const arr2 = ['audi', 'bmw'];
arr2.forEach((item) => {
const { car = item } = item;
console.log(car);
});
请注意,由于您不是在创建新数组,而是在执行 副作用 (console.log
),因此您不应使用 .map
-相反,使用 forEach
。 .map
仅适用于需要将一个数组的每个元素转换为不同返回数组中的新元素的情况。
可能仅使用参数列表将适当的值放入car
变量中,但它非常丑陋并且滥用默认参数,我'将其放在下面仅供参考(请不要使用它):
const arr2 = ['audi', 'bmw'];
arr2.forEach((item, i, arr, { car = item } = item) => console.log(car));
上面的工作是因为 forEach
只接受 3 个参数,所以第 4 个参数是 undefined
,所以你可以使用默认参数有条件地将一些东西放入 car
标识符中。