我在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语句中使用但没有运气。非常感谢任何帮助。
答案 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>