lodash 检查对象属性是不是有值
Posted
技术标签:
【中文标题】lodash 检查对象属性是不是有值【英文标题】:lodash check object properties has valueslodash 检查对象属性是否有值 【发布时间】:2017-12-11 06:04:05 【问题描述】:我有几个属性的对象,说是这样的
a: "", b: undefined
在 jsx 中是否有任何一种解决方案我可以检查该对象的属性是否为空或是否具有值?如果数组有一个 isEmpty 方法。
我试过了
const somethingKeyIsnotEmpty = Object.keys((props.something, key, val) =>
return val[key] !== '' || val[key] !== undefined
)
【问题讨论】:
您要检查整个对象是否为空还是要检查特定属性? @MayankShukla 每个对象 你想检查所有属性,如果其中任何一个为空或未定义,那么最终输出将为真否则假正确?? @MayankShukla 是的 【参考方案1】:在 lodash 中,你可以使用 _.some
_.some(props.something, _.isEmpty)
【讨论】:
这是javascript。 _.isEmpty 是一个函数,函数是 javascript 中的第一类(您可以将其作为参数传递并从其他函数返回)。 _.some 用于收集而不是用于对象。它会起作用吗? 对象是属性/值的集合。无论如何, _.some 适用于数组和对象。请查看文档 - lodash.com/docs/#some 我认为我们应该先检查路径,然后再检查它是否有价值_.has(object, pathToProperty)
【参考方案2】:
可能的方法:
迭代所有键并检查值:
let obj = a:0, b:2, c: undefined;
let isEmpty = false;
Object.keys(obj).forEach(key =>
if(obj[key] == undefined)
isEmpty = true;
)
console.log('isEmpty: ', isEmpty);
使用Array.prototype.some(),像这样:
let obj = a:0, b:1, c: undefined;
let isEmpty = Object.values(obj).some(el => el == undefined);
console.log('isEmpty: ', isEmpty);
查看undefined
和null
的索引:
let obj = a:1, b:2, c: undefined;
let isEmpty = Object.values(obj).indexOf(undefined) >= 0;
console.log('isEmpty: ', isEmpty);
【讨论】:
为什么在你的第二个代码块中不使用every?我想检查是否有任何对象未定义或未定义。 @CeldricKang 一些会检查是否有任何值未定义然后它会返回true,我们也可以使用every,并检查所有值是否正确。【参考方案3】:您可以使用 lodash _.every
并检查 _.values
是否为 _.isEmpty
const profile =
name: 'John',
age: ''
;
const emptyProfile = _.values(profile).every(_.isEmpty);
console.log(emptyProfile); // returns false
【讨论】:
工作答案! 我有一个对象数组,我想检查年龄是否为空,我该如何处理?【参考方案4】:以下是检查对象中所有属性值是否为空的简单而优雅的解决方案,
const ageList =
age1: 0,
age: null
;
const allAgesEmpty = _.values(ageList).every((age) => !age);
console.log(allAgesEmpty); // returns true
关于_.every里面的函数
注意:不要在 every 中使用 _.empty,因为空的数字总是返回 false。 在这里阅读更多:https://github.com/lodash/lodash/issues/496 注意:如果属性具有布尔值,那么您可能需要进一步修改函数【讨论】:
以上是关于lodash 检查对象属性是不是有值的主要内容,如果未能解决你的问题,请参考以下文章
Django 模板 - 检查字段中是不是有值,如果 ManyToManyField 则为空