1
我試圖在JavaScript中創建一個動態函數,我可以將一個對象與另一個對象進行比較,將比較運算符作爲字符串值傳遞給該函數。將比較運算符的字符串表示形式轉換爲實際的比較運算符
例如兩個對象是這樣的:
{value: 1, name: "banana"}
{value: 2, name: "apples"}
我要香蕉比蘋果,是有辦法,我可以通過一個比較操作的字符串表示,然後用它作爲一個實際的比較操作功能?
function compare (first, second, comparator) {
return first.id (comparator) second.id;
}
e.g compare(apple,banana,"<=");
//return true
compare(apple,banana,"===");
//return false
等
授予我可以用一個開關或者執行上比較字符串聲明即
if (comparator === "<=")
return first.id <= second.id
if (comparator === "===")
return first.id === second.id
,但我不知道是否有任何更好更有效的方式來做到這一點,避免需要這樣的switch/if語句。
'回報的eval(「first.id‘+比較+’second.id」);' –
通常情況下一個將是比較行爲的函數,通過這個。你可以預先定義它們,所以你可以把它們稱爲LESSTHAN等等。然後在你的'比較'函數中,你需要做的就是調用這個函數。 –