两个变量的相等判断+case

function isEqual(a, b) {
    var ret = false,
        i;
    var t1, t2;
    if(a === b || (a !== a && b !== b)) {
        ret = true;
    } else if(typeof a == 'object' && typeof b == 'object') {
        t1 = Object.keys(a);
        t2 = Object.keys(b);

        if (t1.length == t2.length) {
            for (i in a) {
                if (isEqual(a[i], b[i])) {
                    ret = true;
                } else {
                    ret = false;
                    break;
                }
            }
        }
    }

    return ret;
}

// 测试用函数
function assert(result, want) {
    if(result == want) {
        console.log('SUCEESS')
    } else
        console.warn('FAIL', 'Got: ' + result, 'Want: ' + want)
}

// 测试case
assert( isEqual('1', '1'), true);
assert( isEqual(NaN, NaN), true);
assert( isEqual([1,2,3,4,5], [1,2,3,4,5]), true);

assert( isEqual([
    {a: 1, b: 2},
    2
], [
    {a: 1, b: 2},
    2
]), true);

assert( isEqual({
    a: 1, b: 2, c: [1,2,3]
}, {
    a: 1, b: 2, c: [1,2,3]
}), true);


assert( isEqual({
    a: 1, b: 2, c: [1,2,3, {a: 1}]
}, {
    a: 1, b: 2, c: [1,2,3, {a: 1}]
}), true);

 

posted @ 2016-10-27 18:47  雷夫·麦  阅读(381)  评论(0)    收藏  举报