Igual //Repositório JavaScript

Descrição

Testa se dois ou mais objetos são iguais, aceita qualquer tipo de objeto, inclusive arrays multidimensionais.
Criado: 2005.12.26

Código (Download)

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/geral/equals [rev. #1]

equals = function(a, b){
    for(var j, o = arguments, i = o.length, c = a instanceof Object; --i;)
        if(a === (b = o[i]))
            continue;
        else if(!c || !(b instanceof Object))
            return false;
        else for(j in b)
            if(!equals(a[j], b[j]))
                return false;
    return true;
};

Exemplo (Exemplo)

<script type="text/javascript">
//<![CDATA[

document.write(
    "equals(1, 2, 3, 4) = ".bold(), equals(1, 2, 3, 4), "<br />",
    "equals(1, 1, 1, 1) = ".bold(), equals(1, 1, 1, 1), "<br />",
    "equals({a: 1, b: 0}, {b: 0, a: 1}) = ".bold(), equals({a: 1, b: 0}, {b: 0, a: 1}), "<br />",
    "equals({a: 1, b: 0}, {a: 1, b: null}) = ".bold(), equals({a: 1, b: 0}, {a: 1, b: null}), "<br />",
    "equals([1, 2, 3], [3, 2, 1]) = ".bold(), equals([1, 2, 3], [3, 2, 1]), "<br />",
    "equals([1, 2, 3], [1, 2, 3]) = ".bold(), equals([1, 2, 3], [1, 2, 3]), "<br />",
    "equals([[1],2,[3]], [1,2,3]) = ".bold(), equals([[1],2,[3]], [1,2,3]), "<br />"
);

//]]>
</script>

Ajuda

equals(a: Object, b: Object, [...]): Boolean
Analisa dois ou mais objetos e retorna true se eles são iguais (contém as mesmas propriedades com os mesmos valores).
a
objeto a ser analisado
b
objeto a ser analisado
...
quantidade infinita de objetos

Ranque (Votos: 7)

2.00