簡體   English   中英

javascript object reduce中如何有條件地添加props?

[英]How to conditionally add props in javascript object reduce?

以下函數減少一個數組並映射一個新的 object。

getProps() {
  return this.items
            .reduce((map,props)=>
              ({...map, [props.name]: props.value, checked: true)})
            }), {})
}

我想要實現的是,如果滿足條件,我想有條件地添加選中的屬性(鍵)。

像這樣的東西。

 getProps() {
getProps() {
  return this.items
            .reduce((map, props)=>
              ( {...map
                , [props.name]: props.value
                , (props.required) ? checked: true : null
                
                  // which means that if props.required is true 
                  // then add checked: true 
                  // else do nothing (do not add checked)
  ,)})}), {})
}

經驗值

this意味着如果 props.required 為真,則添加檢查值為真的屬性(以便添加鍵:值對檢查:真,否則什么也不做(意味着不添加鍵:值對檢查:真)

更新

這不是有條件地將“真”值分配給選中的屬性。
即將有條件地添加選中的屬性。 注意這里的區別...

一個簡單的if語句就可以解決問題:

getProps() {
  return this.items.reduce(
    (map, props) => {
      if (!props.checked) return map;
      return ({...map, [props.name]: props.value, checked: true });
    },
    {}
  );
}

或使用條件運算符:

getProps() {
  return this.items.reduce(
    (map, props) => props.checked
      ? map
      : ({...map, [props.name]: props.value, checked: true }),
    {}
  );
}

我想你在追求這樣的事情

{ [props.name]: props.value, ...(props.required && { checked: true }) }

這是使用三元運算符的等價物

{ [props.name]: props.value, ...(props.required ? { checked: true } : {}) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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