1 回答
TA贡献1875条经验 获得超3个赞
让我们有一个可以接受多个参数并返回&&操作的函数。
function and(...args) { return args.reduce((acc, x) => { return acc && x }, true) }
将默认设置为 true。
我们会做同样的||操作
function or(...args) { return args.reduce((acc, x) => { return acc || x}, true) }
将默认设置为 true。
让我们将AND大写字母和OR大写字母替换为小写字母。
"AND(value1, OR(value2,value3), value4)".replace("AND", "and")
"OR(value1, OR(value2,value3), value4)".replace("OR", "or")
让我们使用功能replace_and并replace_or为此目的
function replace_and(str) { return str.replace("AND", "and") }
function replace_or(str) { return str.replace("OR", "or")
让我们用数据中的实际值替换公式中的值
让我们将其添加为一个函数,并通过在将其分配为值时仅在此处计算为 bool 值来使其更智能。这可以帮助我们解决混合使用整数、字符串和不同类型的问题。
function replace_values(data, formula) {
return Object.entries(data).reduce((formula, [x, y]) => {
bool = y ? true : false;
return formula.replace(x,bool);
}, formula)
}
让我们在完成所有 4 个步骤后进行评估。
eval("or(false, or(true))")
=> true
我们可以像这样评估一连串的功能
formula = "AND(value1, OR(value2,value3))"
data = {
value1: '12',
value2: '',
value3: 'some string',
value4: '34'
}
replace_values(data, replace_and(replace_or(formula)))
=> "and(true, or(false,true))"
eval(replace_values(data, replace_and(replace_or(formula))))
=> true
添加回答
举报