lodash检查对象属性有值

时间:2017-07-07 03:57:41

标签: javascript ecmascript-6 lodash

我有几个属性的对象,说它是这样的

{ a: "", b: undefined }

在jsx中是否有任何一行解决方案我可以检查该对象的属性是否为空或是否有价值?如果数组有一个isEmpty方法。

我试过这个

const somethingKeyIsnotEmpty = Object.keys((props.something, key, val) => {
        return val[key] !== '' || val[key] !== undefined
})

4 个答案:

答案 0 :(得分:28)

在lodash中,您可以使用_.some

_.some(props.something, _.isEmpty)

答案 1 :(得分:4)

可能的方法:

迭代所有键并检查值:



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);




检查undefinednull的索引:



let obj = {a:1, b:2, c: undefined};

let isEmpty = Object.values(obj).indexOf(undefined) >= 0;

console.log('isEmpty: ', isEmpty);




答案 2 :(得分:2)

您可以使用lodash _.every并检查_.values是否为_.isEmpty

const profile = {
  name: 'John',
  age: ''
};

const emptyProfile = _.values(profile).every(_.isEmpty);

console.log(emptyProfile); // returns false

答案 3 :(得分:0)

一个简单而优雅的方法来检查一个对象中的所有属性值是否为空,

const ageList = {
  age1: 0,
  age: null
};

const allAgesEmpty = _.values(ageList).every((age) => !age);

console.log(allAgesEmpty); // returns true

关于_.every里面的函数

  • 注意:不要在 each 中使用 _.empty,因为数字的空总是返回 false。 在此处阅读更多信息:https://github.com/lodash/lodash/issues/496
  • 注意:如果一个属性有一个布尔值,那么你可能需要进一步修改函数