A way to prevent properties to be added to an object if they are null or undefined.

Michał Wadas michalwadas at gmail.com
Wed Nov 29 01:50:44 UTC 2017


You can just use proxy with proper set trap.

On Wed, 29 Nov 2017 at 02:30, Rodrigo Carranza <rodrigocarranza at outlook.com>
wrote:

> A way to prevent properties to be added to an object if they are null or
> undefined.
>
> Currently this can be accomplished in many ways:
>
> With an if:
> ```js
> function foo(couldBeNull){
> let ret = {}
> if(couldBeNull){
> ret.couldBeNull = couldBeNull
> }
> return  ret
> }
> ```
>
> With ternary (kind of gross)
> ```js
> function foo(couldBeNull){
> let ret = {}
> couldBeNull ? (ret.couldBeNull = couldBeNull) : null
> return  ret
> }
> ```
>
> Also gross
> ```js
> function foo(couldBeNull){
> let ret = {}
> couldBeNull && (ret.couldBeNull = couldBeNull)
> return  ret
> }
> ```
>
> A bit hard to read:
> ```js
> function foo(couldBeNull){
> let ret = {
> ...({couldBeNull} : {})
> }
> return  ret
> }
> ```
>
> Requires importing a lib or writing the function by yourself. Also it has
> to iterate over all values
> ```js
> function foo(couldBeNull){
> let ret = {
> couldBeNull
> }
> ret = removeEmptyValues(ret) // imported from some library
> return  ret
> }
> ```
>
> Wouldn't it be better something like this?:
>
> ```js
> function foo(couldBeNull){
> let ret = {
> couldBeNull?
> }
> return  ret
> }
> ```
>
> Or if you want to set other property name
>
> ```js
> function foo(couldBeNull){
> let ret = {
> bar ?:  couldBeNull // bar is not added if couldBeNull is null or undefined
> }
> return  ret
> }
> ```
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Libre
> de virus. www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
> <#m_-273853769969316494_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20171129/7eb60baf/attachment.html>


More information about the es-discuss mailing list