创建对象时,如果值未定义,则不要包含在新对象中

时间:2017-04-16 22:41:06

标签: javascript ecmascript-6 destructuring

主要是涉及对象解构的es6 / 7问题。

假设我有这个示例函数:

getNext : List a -> a -> Maybe a
getNext list element =
  list 
    |> List.drop 1 
    |> zip list
    |> List.filter (\(current, next) -> current == element)
    |> List.map (\(current, next) -> next)
    |> List.head

zip : List a -> List b -> List (a,b)
zip = List.map2 (,)

它是一种说法,"第一个参数是预期的,如果第二个参数被定义,也将它添加到对象中#34;。

是否有更优雅的方法来实现相同的效果,但是使用对象解构?

1 个答案:

答案 0 :(得分:3)

您也可以将您的功能编写为

const sample = (one, two) => two? {one, two}: {one};
  

它的一种说法,“第一个参数是预期的,如果第二个参数被定义,也将它添加到对象中”

与代码一样,请注意添加的值作为第二个参数。 有更多的虚假值而不仅仅是undefined,其中一些你可能想要分配给结果。如果标准是否定义了第二个参数,我将明确检查undefined

const sample = (one, two) => two !== undefined? {one, two}: {one};