我有一个正在创建的对象,该对象可能具有未定义的属性。
是否有比我在下面做的更简洁的方法来设置属性:
var ruleObj = {
factor: (ruleArray[2] ? ruleArray[2].trim() : null),
resultElseTarget: (ruleArray[10] ? ruleArray[10].trim() : null)
}
注意,我必须在三进制运算符之后重复两次该变量。我问的原因是我已经多次遇到过这种类型的问题,但这似乎并不是解决问题的最佳方法。
最佳答案
这是一个包装了另一个功能的函数,对null
和undefined
值不执行任何操作:
const liftMaybe = f => x => x == null ? null : f(x);
然后,您可以定义对
trim
不执行任何操作的undefined
:const trimMaybe = liftMaybe(x => x.trim());
并利用它:
var ruleObj = {
factor: trimMaybe(ruleArray[2]),
resultElseTarget: trimMaybe(ruleArray[10]),
};
它与您原来的处理空字符串的方法有所不同,但是我不知道这是有意的还是有关联的。