第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們?nèi)绾问褂?javascript 計算格式為

我們?nèi)绾问褂?javascript 計算格式為

繁星淼淼 2022-12-22 11:59:06
假設(shè)我有來自服務(wù)器端響應(yīng)的字段值數(shù)據(jù)data: {value1: '12',value2: ''.value3: 'some string',value4: '34'}我有另一個 api 響應(yīng),其中包含要從前端 Javascript 評估的公式字符串:{formula: "AND(value1, OR(value2,value3), value4)"}如果公式可以是動態(tài)的,我如何從 JS 評估這個公式:{formula: "AND(value1, value2, value3, value4)"}
查看完整描述

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


查看完整回答
反對 回復(fù) 2022-12-22
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號