[英]javascript spread operator decision making
myfunction 將人的 object 作為輸入,並返回一個新的 object,其中包含人的名字、姓氏大小和體重。 如果輸入 object 中沒有給出重量或尺寸,則它不應出現在 output object 中
function myFunction(obj) {
return {
fn: obj.fn,
ln: obj.ln,
...(obj.size && { size: `${obj.size}cm` }),
...(obj.weight && { weight: `${obj.weight}kg` }),
};
}
myFunction({ fn: 'Lisa', ln: 'Müller', age: 17, size: 175, weight: 67 })
我不明白...(obj.size && { size:
${obj.size}cm }),
如何工作的
您可以使用值(如果存在)或空對象(如果不存在)有條件地創建對象,然后(無條件地)將它們傳播到生成的 object 中:
function myFunction(obj) {
const size = obj.size ? { size: `${obj.size}cm` } : {};
const weight = obj.weight ? { weight: `${obj.weight}kg` } : {};
const {fn, ln} = obj;
return {fn, ln, ...size, ...weight};
}
或者(也許不太復雜),您可以先創建結果 object,然后有條件地設置屬性值:
function myFunction(obj) {
const {fn, ln} = obj;
const result = {fn, ln};
if (obj.size) result.size = `${obj.size}cm`;
if (obj.weight) result.weight = `${obj.weight}kg`;
return result;
}
這是因為&&
運算符的“ 短路評估”。
如果第一個操作數是錯誤的,則不會將任何內容“傳播”到 object 文字中。 如果它不是假的,則 object { size: ${obj.size}cm
}將散布到返回的 object 文字中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.