如果Lodash条件为真,则三元运算符速记返回相同的值?

时间:2017-10-02 22:00:33

标签: javascript typescript lodash

Lodash有这方面的简写吗? (或者可能是Vanilla JS / TypeScript)

var val = obj.value !== undefined : obj.value : '';

请注意var val = obj.value || '';无效,因为0 | false是有效值,而是有价值的值。

感谢。

4 个答案:

答案 0 :(得分:1)

使用lodash,您可以使用_.get()。方法3rd可选参数是默认值,如果属性为undefined

,将返回该参数



var obj = { anotherValue: 'not default' };

var val = _.get(obj, 'value', 'default');
var anotherVal = _.get(obj, 'anotherValue', 'default');

console.log('value:', val);
console.log('anotherVal:', anotherVal);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果支持ES6,则可以使用由JS引擎抽象的解构和默认参数。

function validate( {
   value = ''
} = {}) {
   // The default parameters are part of the function 
   // signature, which helps in keeping the function body 
   // clean without any boilerplate code for default values

  console.log('value: ' + value );
}

validate({ value: 100 });  // value: 100
validate({ value: 0 });    // value: 0
validate();                // value: 

这里使用了2种模式

{
  value = ''
} = {}

跟随等于的那个是默认值,它是对象和花括号内嵌套的预期值,它是解构模式。

答案 2 :(得分:0)

Destructuring允许您设置默认值(ES6功能)。例如:

const {val = ''} = obj

答案 3 :(得分:0)

ES6解构(val = ''仅当值未定义时):

var {value: val=''} = obj;