如何最小化javascript中的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条件语句。我怎样才能最小化它? 这是我的密码

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。谢谢你的回答谢谢你的回答