【问题标题】:Find a empty string value within an object and change to specific string?在对象中查找空字符串值并更改为特定字符串?
【发布时间】:2020-09-08 12:46:38
【问题描述】:

反应。

当有人填写表格时,我想确保他们留空的任何字段都是对特定字符串的更改。当试图通过一个对象时,我遇到了问题......

  const [formValues, setFormValues] = useState({
    firstName: firstName,
    lastName: lastName,
    email: emailAddress,
  })

const personalDetails = (obj) => { 
  for (let [key, value] of Object.entries(obj)) { 
    // return`${key}: ${value}`
    if (value === "") { 
      return "NA"
    }
  }
}

当有人未能填写他们的电子邮件地址时,我希望在对象中使用字符串“NA”。

【问题讨论】:

  • 尝试 obj[key] = "NA" 而不是 return "NA"

标签: javascript reactjs forms object


【解决方案1】:

我认为你把它弄得太复杂了。试试这个:

const [formValues, setFormValues] = useState({
  firstName: '',
  lastName: '',
  email: '',
});

在您的输入占位符中使用。

然后:

const handleSubmit = () => {
 e.preventDefault();
 const {firstName, ....anotherNamesFromInputs} = e.target.elements;
 // FIREBASE EXAMPLE
 firebase.firestore().collection('something').set({
  'firstName': firstName.value || firstName.placeholder, // Or as you wish 'NA'
  ...sameForOthers
 });
};


<form onSubmit={handleSubmit}>
  <label>
    Name
    <input name="firstName" placeholder="Name"/>
  </label>
  .....next labels with inputs
 <button>Sumbit</button>
</from>

【讨论】:

    【解决方案2】:

    我愿意:

    const personalDetails = (object) => Object.keys(obj).reduce((result, key) => result[key] = object[key] || 'NA' , {});
    

    【讨论】:

    • 为什么要使用reduce方法来改变对象的内容?
    【解决方案3】:

    您编写的函数personalDetails 不会更改对象属性。它只是检查是否存在具有空字符串值的键,如果找到,则仅返回 "NA" 并且不更改对象。值得一提的是,当它找到第一个值为"" 的键时,它已经返回。因此,如果用户没有填写firstName,则函数返回"NA"并在firstName之后执行完毕,其他键将不被检查。 所以,Madhu Magar 是如何评论的,你可以试试这样的:

    if (value === "") {
      obj[key] = "NA"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2015-08-06
      • 1970-01-01
      相关资源
      最近更新 更多