簡體   English   中英

有條件地更改 object 屬性

[英]Conditionally change object property

我正在根據條件更改 object 屬性。 我正在使用反應讓我們說一個 object:

obj = {a: 4, b: 6, ...}

現在我想改變obj.a如果標志為真,所以我可以做如下的事情:

setState({...obj, a: flag === true ? 6 : obj.a})

還有其他方法嗎,我不想像上面那樣使用三元運算符,因為在嵌套的 object 中它看起來很討厭。

我也不想復制 object 並將其更改如下:

 const obj_copy = {...obj}
 if(flag) obj_copy = 4;
 setState({...obj_copy))

最近我遇到了?. 這真的很有幫助。

// we can change this
obj && obj.a === 'text' ? ... : ...

// into
obj?.a === 'text' ? ... : ...

我正在尋找類似上面的東西......只是為了知識目的有沒有辦法做到這一點?

您可以對檢查進行邏輯 AND 和 object 進行傳播。

 let obj = { a: 4, b: 6 }, flag = true; console.log({...obj, ...flag === true && { a: 6 } }); flag = false; console.log({...obj, ...flag === true && { a: 6 } });

您可以使用Object.assign有條件地分配屬性,如下所示:

setState(Object.assign({ ...obj }, flag === true ? { a: 6 } : {}))

此外,如果flag是 boolean 或者您可以接受任何真實值,我將刪除等號:

setState(Object.assign({ ...obj }, flag ? { a: 6 } : {}))

暫無
暫無

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

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