如何最小化javascript中的if语句
我有一个很长的if条件语句。我怎样才能最小化它? 这是我的密码如何最小化javascript中的if语句,javascript,reactjs,meteor,Javascript,Reactjs,Meteor,我有一个很长的if条件语句。我怎样才能最小化它? 这是我的密码 if(this.refs.category.value.trim() != "" && this.refs.decisive_min.value.trim() != "" && this.refs.decisive_max.value.trim() != "" && this.refs.interactive_min.value.trim() != ""
if(this.refs.category.value.trim() != "" &&
this.refs.decisive_min.value.trim() != "" && this.refs.decisive_max.value.trim() != "" &&
this.refs.interactive_min.value.trim() != "" && this.refs.interactive_max.value.trim() != "" &&
this.refs.stabilizing_min.value.trim() != "" && this.refs.stabilizing_max.value.trim() != "" &&
this.refs.cautious_min.value.trim() != "" && this.refs.cautious_max.value.trim() != "" &&
this.refs.aesthetic_min.value.trim() != "" && this.refs.aesthetic_max.value.trim() != "" &&
this.refs.economic_min.value.trim() != "" && this.refs.economic_max.value.trim() != "" &&
this.refs.individualistic_min.value.trim() != "" && this.refs.individualistic_max.value.trim() != "" &&
this.refs.political_min.value.trim() != "" && this.refs.political_max.value.trim() != "" &&
this.refs.altruist_min.value.trim() != "" && this.refs.altruist_max.value.trim() != "" &&
this.refs.regulatory_min.value.trim() != "" && this.refs.regulatory_max.value.trim() != "" &&
this.refs.theoretical_min.value.trim() != "" && this.refs.theoretical_max.value.trim() != ""){
var data = {category:this.refs.category.value.trim()};
data.decisive_min = this.refs.decisive_min.value.trim();
data.decisive_max = this.refs.decisive_max.value.trim();
data.interactive_min = this.refs.interactive_min.value.trim();
data.interactive_max = this.refs.interactive_max.value.trim();
data.stabilizing_min = this.refs.stabilizing_min.value.trim();
data.stabilizing_max = this.refs.stabilizing_max.value.trim();
data.cautious_min = this.refs.cautious_min.value.trim();
data.cautious_max = this.refs.cautious_max.value.trim();
data.aesthetic_min = this.refs.aesthetic_min.value.trim();
data.aesthetic_max = this.refs.aesthetic_max.value.trim();
data.economic_min = this.refs.economic_min.value.trim();
data.economic_max = this.refs.economic_max.value.trim();
data.individualistic_max = this.refs.individualistic_max.value.trim();
data.individualistic_min = this.refs.individualistic_min.value.trim();
data.political_min = this.refs.political_min.value.trim();
data.political_max = this.refs.political_max.value.trim();
data.altruist_min = this.refs.altruist_min.value.trim();
data.altruist_max = this.refs.altruist_max.value.trim();
data.regulatory_min = this.refs.regulatory_min.value.trim();
data.regulatory_max = this.refs.regulatory_max.value.trim();
data.theoretical_min = this.refs.theoretical_min.value.trim();
data.theoretical_max = this.refs.theoretical_max.value.trim();
我只想检查表单中的所有值,如果它们都不是空字符串
我在《流星》中使用了React JS的参考文献 尝试使用
for (var property in this.refs) {
if (this.refs.hasOwnProperty(property)) {
// perform a null check
if(this.refs[property]){
//perform operaion
data[property] = this.refs[property].trim();
}
}
}
试用
for (var property in this.refs) {
if (this.refs.hasOwnProperty(property)) {
// perform a null check
if(this.refs[property]){
//perform operaion
data[property] = this.refs[property].trim();
}
}
}
您可以使用带有所需密钥的数组。然后只取一个循环进行分配和检查 如果所有值都是真实值,则数据包含修剪后的值,否则未定义
您可以使用带有所需密钥的数组。然后只取一个循环进行分配和检查 如果所有值都是真实值,则数据包含修剪后的值,否则未定义
使用ES2015,您可以执行以下操作: 在组件内部
const fields = getFields(this.refs);
if (checkFieldsNotEmpty(fields)) {
const data = {category:this.refs.category.value.trim()};
fields.forEach(field => {
data[`${field.name}_min`] = field.valueMin;
data[`${field.name}_max`] = field.valueMax;
});
// ...
}
组件外部可以是静态方法
const fieldNames = [
'decisive',
'interactive',
'stabilizing',
// ...
];
const getFields = refs => fieldNames.map(name => ({
name,
valueMin: refs[`${fieldName}_min`].value.trim(),
valueMax: refs[`${fieldName}_max`].value.trim()
}));
const checkFieldsNotEmpty = fields => {
for (let field of fields) {
if (field.valueMin === '' || field.valueMax === '') {
return false
}
}
return true;
};
使用ES2015,您可以执行以下操作: 在组件内部
const fields = getFields(this.refs);
if (checkFieldsNotEmpty(fields)) {
const data = {category:this.refs.category.value.trim()};
fields.forEach(field => {
data[`${field.name}_min`] = field.valueMin;
data[`${field.name}_max`] = field.valueMax;
});
// ...
}
组件外部可以是静态方法
const fieldNames = [
'decisive',
'interactive',
'stabilizing',
// ...
];
const getFields = refs => fieldNames.map(name => ({
name,
valueMin: refs[`${fieldName}_min`].value.trim(),
valueMax: refs[`${fieldName}_max`].value.trim()
}));
const checkFieldsNotEmpty = fields => {
for (let field of fields) {
if (field.valueMin === '' || field.valueMax === '') {
return false
}
}
return true;
};
容器中有多个表单。如果我使用这个,它将总是返回false。顺便说一下,我将添加+1。因为这在某些情况下可以帮助我。Thanksah是的,谢谢,这将检查refs中的所有属性。容器中有多个表单。如果我使用这个,它将总是返回false。顺便说一下,我将添加+1。因为这在某些情况下可以帮助我。谢谢,这将检查参考文献中的所有属性。也考虑把这个代码放在一个函数中,所以如果你只是一个函数,那么使用一个更好的函数名。你能改变这个答案吗?这很好,但我更喜欢我可以用在其他形式的答案。我认为键数组是不同的每一种形式。因此,RESS值并不总是有John Hascall或最大值。感谢IDEA的思想。顺便说一下,我也添加了1。也考虑把这个代码放在一个函数中,所以如果你只是一个函数,那么使用一个更好的函数名。你能改变这个答案吗?这很好,但我更喜欢我可以用在其他形式的答案。我认为键数组是不同的每一种形式。那么this.refs值并不总是有_min或_max。谢谢John Hascall的建议。顺便说一下,我也加了+1。谢谢你的回答谢谢你的回答