动态if语句使用字符串变量

时间:2015-05-11 14:37:44

标签: javascript if-statement

我在JavaScript中有一个对象,它看起来像这样:

variable = {1: 'No', 2: 'No', 3: 'No'} 

并根据用户和更新动态更改,如下所示:

variabel = {1: 'Yes', 2: 'No', 3: 'Yes'} 

我现在想为任何具有yes的键动态构建if语句:

if (feature.properties.1.indexOf(variable.1)!=-1 && feature.properties.3.indexOf(variable.3)!=-1)  

有办法做到这一点吗?我尝试循环对象以动态构建一个字符串语句,然后尝试取消对它进行取消绑定以在if语句中使用但没有运气。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以获取所需比较目标中的属性(为简单起见,称为“参考”),并检查该功能中的相应属性。如果引用中存在属性但不存在该功能,则会认为验证失败。

var reference = {
  1: 'Yes',
  2: 'No',
  3: 'Yes'
};

var feature1 = {
  properties: {
    1: 'Yes',
    3: null
  }
};

var feature2 = {
  properties: {
    1: 'Yes',
    3: 'Yes'
  }
};

function compareReference(ref, feature) {
  var props = feature.properties;
  return Object.keys(ref).reduce(function(prev, key) {
    console.log('comparing', key, ref[key], props[key], prev);
    if (ref[key] === 'Yes') {
      // Only compare yes values
      return prev && props[key] === 'Yes'; 
    } else {
      return prev;
    }
  }, true);
}

document.getElementById('r1').textContent = '' + compareReference(reference, feature1);
document.getElementById('r2').textContent = '' + compareReference(reference, feature2);
<div id="r1"></div>
<div id="r2"></div>