解构对象和默认参数
Destructuring Objects and default parameters
我有一个涉及默认参数和对象解构的问题需要解决。
我有一个对象 'product' 具有这种形状:
{
name: "Slip Dress",
priceInCents: 8800,
availableSizes: [ 0, 2, 4, 6, 10, 12, 16 ]
}
到目前为止,这是我的代码,但我收到一个错误,指出 'availableSizes' 不可迭代。有人可以帮我更正此代码吗?
我已经尝试调整我的函数中的默认参数,但我已经移动了我的 return 语句但无济于事。
function checkIfSizeIsAvailable(product = {availableSizes:[]}, size = 0) {
// let availableSizes = product;
let foundSize = "";
for (let sizeCheck of product.availableSizes) {
if (sizeCheck === size) {
foundSize = size;
}
}
if (foundSize === ""){
return false;
} else {
return true;
}
//for (let i = 0; i < sizes.length; i++) {
// return false;
}
正如 VLAZ 在评论中提到的,您可以在没有 availableSizes
字段的情况下传递对象,这会导致该错误。
当您的变量一起在赋值的左侧大小上形成 object/array 时,就会发生解构:
function checkIfSizeIsAvailable(product = {availableSizes:[]}, size = 0) {
// ^ Because of the default parameter, product always exists
// Now we actually destructure with a default value for missing fields
const { availableSizes = [] } = product;
}
或更紧凑:
function checkIfSizeIsAvailable({ availableSizes = [] } = {availableSizes:[]}, size = 0) {
}
请注意,这不会防御非数组值,甚至是虚假值。用户可以传递 { availableSizes: false }
并且您的 availableSizes
也将是 false
.
我有一个涉及默认参数和对象解构的问题需要解决。 我有一个对象 'product' 具有这种形状:
{
name: "Slip Dress",
priceInCents: 8800,
availableSizes: [ 0, 2, 4, 6, 10, 12, 16 ]
}
到目前为止,这是我的代码,但我收到一个错误,指出 'availableSizes' 不可迭代。有人可以帮我更正此代码吗?
我已经尝试调整我的函数中的默认参数,但我已经移动了我的 return 语句但无济于事。
function checkIfSizeIsAvailable(product = {availableSizes:[]}, size = 0) {
// let availableSizes = product;
let foundSize = "";
for (let sizeCheck of product.availableSizes) {
if (sizeCheck === size) {
foundSize = size;
}
}
if (foundSize === ""){
return false;
} else {
return true;
}
//for (let i = 0; i < sizes.length; i++) {
// return false;
}
正如 VLAZ 在评论中提到的,您可以在没有 availableSizes
字段的情况下传递对象,这会导致该错误。
当您的变量一起在赋值的左侧大小上形成 object/array 时,就会发生解构:
function checkIfSizeIsAvailable(product = {availableSizes:[]}, size = 0) {
// ^ Because of the default parameter, product always exists
// Now we actually destructure with a default value for missing fields
const { availableSizes = [] } = product;
}
或更紧凑:
function checkIfSizeIsAvailable({ availableSizes = [] } = {availableSizes:[]}, size = 0) {
}
请注意,这不会防御非数组值,甚至是虚假值。用户可以传递 { availableSizes: false }
并且您的 availableSizes
也将是 false
.