我有一个定义如下的功能
function getProperties({
url, listName, stage,
}) {
return {
url,
listName,
currentStage: stage,
};
}
如果我将此功能称为
getProperties({
url: '<URL>',
stage: '<stage>',
})
它应该返回
{
url,
currentStage: stage,
}
所以基本上我希望函数只返回那些实际作为参数传递给这个函数的值。
答案 0 :(得分:0)
您可以将stage
参数分配给currentStage
,如果有[...arguments].pop()
,则将arguments
分配给局部变量,否则将变量设置为普通对象;检查变量是否包含"stage"
属性,如果属性定义为delete
属性并将{currentStage}
设置为要分配给返回对象的对象
function getProperties({url, listName, stage: currentStage} = {}) {
const o = [...arguments].pop() || {};
return Object.assign(o, "stage" in o ? delete o.stage && {
currentStage
} : void 0)
}
console.log(getProperties()); // {}
console.log(getProperties({
url: "<URL>",
stage: "<stage>",
})); // {"url": "<URL>", "currentStage": "<stage>"}
console.log(getProperties({listName:"<abc>"})); // {"listName": "<abc>"}