Add property to object when it's not null

前端 未结 3 1001
我在风中等你
我在风中等你 2020-12-29 23:02

I\'m working on a small API and I want to update the data using HTTP PATCH REQUEST without using a bunch of if statements. I\'m trying to fill the outgoing data

相关标签:
3条回答
  • 2020-12-29 23:47

    Depending on the JS version you are using, you can use the spread operator ...

    const getData = data => ({
      ...data.first  && { 'Custom First Prop Name': data.first },
      ...data.second && { 'Custom Second Prop Name': data.second },
      ...data.third  && { third: data.third },
      ...data.fourth && { fourth: data.fourth },
    });
    
    0 讨论(0)
  • 2020-12-29 23:48

    Non-inline solution

    If you don't need to add the value inline, it is pretty straightforward and clean to write your assignment like this.

    const val1 = 1
    const val2
    const data = {}
    
    val1 && (data.a = val1) // 1
    val2 && (data.b = val2) // Not added
    // data = { a : 1 }
    

    NOTE: This will not work if the value is falsey

    0 讨论(0)
  • 2020-12-29 23:56

    You could use Object.assign in combination with the ternary operator:

    let data = Object.assign({},
      first === null ? null : {first},
      ...
    );
    

    This works because Object.assign will skip over null parameters.

    If you are sure that the property value is not going to be "falsy", then it would be bit shorter to write:

    let data = Object.assign({},
      first && {first},
      ...
    );
    

    Assuming the object is going to be stringified at some point, since stringification ignores undefined values, you could also try

    let data = {
      first: first === null ? undefined : first,
      ...
    }
    
    0 讨论(0)
提交回复
热议问题