簡體   English   中英

javascript 傳播算子決策

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM