onChange检查对象的所有属性是否存在且未定义或为空字符串

时间:2017-04-22 01:53:20

标签: javascript reactjs ecmascript-6 lodash

这是一种非常常见的用法,您必须检查是否所有字段都已填满。我使用了反应onChange并将e.target.name作为我对象的关键。

像我一样console.log(this.state.user);我会得到

user : {
    name:"something",
    age:1
}

但是如何检查一切是否为空或为空?我像user.name != undefined手动检查,但我的密钥超过10.有没有更好的lodash方法来做到这一点?

我设置了这样的状态

const user = this.state.user;
user[field] = event.target.value;

this.setState({
    user
});

2 个答案:

答案 0 :(得分:0)

您可以迭代对象的值并使用reduce方法。

const allExist = Object.values(this.state.user)
  .reduce(function(accumulator, current){
   return accumulator && !!current
  }, true);

const user = {
  name:"something",
  age:1
}

const allExist = Object.keys(user)
  .reduce(function(accumulator, current){
   return accumulator && !!current
  }, true);
  
console.log(allExist);

答案 1 :(得分:0)

您可以使用Object.keys方法-循环生成的数组并检查每个键是否具有有效值:

const user = {
  name: "Tom",
  age: 28,
  address: null,
  occupation: "Programmer",
  interest: "JavaScript",
  dob: undefined
}

const keys = Object.keys(user);
for (let i = 0; i < keys.length; i++) {
  if (user[keys[i]] == null) {
    console.log(`${keys[i]} needs a value`);
  }
}