从变量字符串应用条件
Apply condition from variable string
我有一个条件选择框:
Select Column
Select Operator
<option value="">Choose operator</option>
<option value="=">Equals</option>
<option value="!=">Does not equal</option>
<option value="LIKE%%">Contains</option>
<option value="NOT LIKE%%">Does not contain</option>
<option value="<">Less then (<)</option>
<option value=">">Greater then (>)</option>
<option value="<=">Equals or less then (<=)</option>
<option value=">=">Equals or greater (>=)</option>
AND Value
我把所有这些都放在一个数组里,比如:
var filterby = [];
$.each(panels, function(index, row) {
var obj = {};
obj['column'] = $(row).find('.dt_column').val();
obj['operator'] = $(row).find('.dt_operator').val();
obj['value'] = $(row).find('.dt_value').val();
filterby.push(obj);
});
现在我有filterby
数组,并希望将它们实现到数组上。
i am here:
var generatedData=tableData.filter(function(index,data){
$.each(conditions,function(index,condition){
if(data[condition.column])
});
});
- 条件是什么?
if(data[condition.column])
? - ,我正在过滤
DataTable
的数据
没有html或任何相关名称,这将是有点通用。我将从你的一组条件语句开始。
<option value="">Choose operator</option>
<option value="=">Equals</option>
<option value="!=">Does not equal</option>
<option value="LIKE%%">Contains</option>
<option value="NOT LIKE%%">Does not contain</option>
<option value="<">Less then (<)</option>
<option value=">">Greater then (>)</option>
<option value="<=">Equals or less then (<=)</option>
<option value=">=">Equals or greater (>=)</option>
你必须将这些转换成函数,这些函数期望被调用时带有左侧和右侧参数。
var conditionalFunctions = {
"=" : function(left,right){ return left === right },
"!=" : function(left,right){ return left !== right },
"LIKE%%" : function(left,right){ return left.indexOf(right) > -1 },
"NOT LIKE%%" : function(left,right){ return left.indexOf(right) == -1 },
"<" : function(left,right){ return left < right },
">" : function(left,right){ return left > right },
"<=" : function(left,right){ return left <= right },
">=" : function(left,right){ return left >= right }
};
然后根据先前选项中的选定值调用这些,并使用当前行值中的参数。
var conditionalFunctions = {
"=" : function(left,right){ return left === right },
"!=" : function(left,right){ return left !== right },
"LIKE%%" : function(left,right){ return left.indexOf(right) > -1 },
"NOT LIKE%%" : function(left,right){ return left.indexOf(right) == -1 },
"<" : function(left,right){ return left < right },
">" : function(left,right){ return left > right },
"<=" : function(left,right){ return left <= right },
">=" : function(left,right){ return left >= right }
};
var oper = document.querySelector("#operator"),
rows = document.querySelectorAll(".row");
document.querySelector("#compare").onclick = function(){
var func = conditionalFunctions[oper.value];
for(var i = 0; i < rows.length; i++){
var row = rows[i],
left = row.querySelector(".left").innerText,
right = row.querySelector(".right").innerText;
row.querySelector(".op").innerText = oper.value;
row.querySelector(".result").innerText = func(left,right);
}
};
.row span { margin : 5px; }
.result { color: red; }
<select id="operator">
<option value="">Choose operator</option>
<option value="=">Equals</option>
<option value="!=">Does not equal</option>
<option value="LIKE%%">Contains</option>
<option value="NOT LIKE%%">Does not contain</option>
<option value="<">Less then (<)</option>
<option value=">">Greater then (>)</option>
<option value="<=">Equals or less then (<=)</option>
<option value=">=">Equals or greater (>=)</option>
</select>
<button type="button" id="compare">Compare</button>
<div class="row">
<span class="left">1</span>
<span class="op"></span>
<span class="right">2</span>
<span class="result"></span>
</div>
<div class="row">
<span class="left">2</span>
<span class="op"></span>
<span class="right">2</span>
<span class="result"></span>
</div>
<div class="row">
<span class="left">"hello"</span>
<span class="op"></span>
<span class="right">"h"</span>
<span class="result"></span>
</div>
相关文章:
- 有条件地在选项标记中应用布尔属性
- 我应该如何应用if-else条件来向具有不同用户角色的人显示不同的菜单
- 如何使用AngularJS应用基于Json字符串响应的条件CSS类
- CSS根据属性的可用性有条件地应用样式
- 在谷歌应用程序脚本中,如何在满足条件的情况下只发送一次电子邮件
- 根据角度 js 应用程序中的条件动态添加类
- Angular js ng repeat与条件ng类不应用css类
- 在输入后,有条件地应用Angular中的两个类之一
- 如何在 HTML5 中的日期选择器中对所选月份应用条件
- 在 AngularJS 应用程序中有条件地注入模块
- 如何将基于条件的样式应用于剑道 UI 网格
- 将过滤条件应用于地图的最干净方法
- 基于javascript条件应用样式
- 有条件地应用属性(AngularJS)
- 嵌入闪亮应用程序中的数据表的条件选择类型
- 筛选时,ng中应用的条件类重复使用$index不一致
- AngularJS:如何有条件地应用视图动画
- 有条件地应用!到JavaScript中的方法
- 如何将where条件应用于主干查询
- 根据ngDialog open中的条件应用css