繁体   English   中英

如何使用lodash的._get方法检查path的2个值

[英]How to use lodash's ._get method to check for 2 values of path

我正在使用._get lib来检查对象中的两个值,然后仅在这两个都为空的情况下才返回默认值。

例如,我有一个对象;

const obj = { person: { firsName: 'John', lastName: '' }

_get(obj, 'person.firsName', 'noname')} ${_get(state, 
'person.lastName', 'noname')}

这里的问题是,即使该人的ATLEAST名称为空,我也只会得到“ noname noname”。

我该怎么做这样的事情,特别是考虑到我正在字符串文字中使用它:

`${_get(obj, '!person.firsName && !person.lasName', 'noname')} } `// pseudo

谢谢

使用不带defaultValue _.get()获取两个名称,然后在返回`noname'之前检查它们是否存在:

 const getName = (obj) => { const firstName = _.get(obj, 'person.firsName', '') const lastName = _.get(obj, 'person.lastName', '') return firstName || lastName ? `${firstName} ${lastName}`.trim() : 'noName'; } const obj = { person: { firsName: 'John' } } console.log(getName(obj)) // John console.log(getName({})) // noname 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script> 

这是一个通用方法,它获取多个路径,过滤undefined值,如果结果数组为空,则返回defaultValue数组:

 const getMultiple = (obj, paths, defaultValue) => { const values = paths .map((path) => _.get(obj, path)) .filter((v) => !_.isUndefined(v)); return values.length ? values : [defaultValue]; } console.log( getMultiple({ person: { firsName: 'John', lastName: 'Smith' }}, ['person.firsName', 'person.lastName'], 'noname').join(' ') ) // John Smith console.log( getMultiple({ person: { firsName: 'John' }}, ['person.firsName', 'person.lastName'], 'noname').join(' ') ) // John console.log( getMultiple({}, ['person.firsName', 'person.lastName'], 'noname').join(' ') ) // noname 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM