1

JS には、2 つの整数を任意の演算子と比較する関数があります。

function compare(n1, n2, crit){
    var operator;

    switch (crit) {
        case 'GT':
            operator = '>';
            break;
        case 'GE':
            operator = '>=';
            break;
        case 'EQ':
            operator = '==';
            break;
        case 'LE':
            operator = '<=';
            break;
        case 'LT':
            operator = '<';
            break;
    }
    return eval(n1 + operator + n2);
}

私は連結よりもエレガントなアプローチを探しており、非常に恐ろしいeval(). 何か案は?

4

1 に答える 1

4

このように関数を再フォーマットしてみませんか?

function compare(n1, n2, crit){
    if (crit == 'GT') return n1 > n2;
    if (crit == 'GE') return n1 >= n2;
    if (crit == 'EQ') return n1 == n2;
    if (crit == 'LE') return n1 <= n2;
    if (crit == 'LT') return n1 < n2;
    return false; // default behavior (??)
}
于 2012-05-23T16:41:51.347 に答える