1 回答

TA貢獻(xiàn)1875條經(jīng)驗 獲得超3個贊
讓我們有一個可以接受多個參數(shù)并返回&&操作的函數(shù)。
function and(...args) { return args.reduce((acc, x) => { return acc && x }, true) }
將默認(rèn)設(shè)置為 true。
我們會做同樣的||操作
function or(...args) { return args.reduce((acc, x) => { return acc || x}, true) }
將默認(rèn)設(shè)置為 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")
讓我們用數(shù)據(jù)中的實際值替換公式中的值
讓我們將其添加為一個函數(shù),并通過在將其分配為值時僅在此處計算為 bool 值來使其更智能。這可以幫助我們解決混合使用整數(shù)、字符串和不同類型的問題。
function replace_values(data, formula) {
return Object.entries(data).reduce((formula, [x, y]) => {
bool = y ? true : false;
return formula.replace(x,bool);
}, formula)
}
讓我們在完成所有 4 個步驟后進(jìn)行評估。
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
添加回答
舉報