簡體   English   中英

Javascript:在一行中有條件地將對象添加到數組

[英]Javascript: Conditionally add objects to array in one line

在我的 JS 代碼中,我有兩個布爾值, flag1flag2 我想創建一個數組['a', 'b', 'c'] ,其中只有當flag1為真時才包含a ,只有當flag2為真時才包含b 我現在擁有的是[flag1? 'a': null, 'b', flag2? 'c': null] [flag1? 'a': null, 'b', flag2? 'c': null] [flag1? 'a': null, 'b', flag2? 'c': null] ,但如果flag1flag2為假,這會給我[null, 'b', null]而不是['b']

解決方案:

這是我找到的最干凈的方法: [...(flag1? ['a']: []),'b',...(flag2? ['c']: [])]

您可以采用 function,它返回數組內的值或用於展開到數組中的空數組。

 const either = (condition, value) => condition? [value]: [], getArray = (flag1, flag2) => [...either(flag1, 'a'), ...either(flag2, 'b'), 'c' ]; console.log(...getArray(true, true)); console.log(...getArray(false, true)); console.log(...getArray(true, false)); console.log(...getArray(false, false));

另一個實現:

 const flag1 = true; const flag2 = false; const data = [[flag1, 'a'], [flag2, 'b'], [true, 'c']]; const result = data.flatMap(([flag, letter]) => flag? letter: []); console.log(result);

暫無
暫無

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

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