Recursão: Os objetos são iguais?
Crie uma função que verifique recursivamente se cada elemento do primeiro objeto é semelhante ao do segundo objeto (ou seja, tipo, valor, índice, chave etc.); retorne true se for e false caso contrário.
Os objetos mencionados neste desafio são instâncias de Array, Map ou Object. O elemento de um objeto pode ser outro objeto dentro de outro objeto e assim por diante. Embora este desafio possa parecer enganosamente fácil com JSON.stringify, a humilde intenção do autor é que o conceito de recursão seja aplicado.
Exemplos
isSimilar(["cars", "trains", ["roads", ["railways"]]], ["cars", "trains", ["roads", ["railways"]]]) ➞ true
isSimilar({"pairs": [[3, 5], [1, 7], [2, 6], [0, 8]]}, {"pairs": [[3, 5], [1, 1], [2, 6], [0, 8]]}) ➞ false
isSimilar({"Sam": 4, "Elliot": 4, "equality": true}, {"Sam": 4, "Elliot": 5, "equality": false}) ➞ false
isSimilar([{"D": [0, 3]}, {"X": [1, 3]}, {"D": [3, 7]}], [{"D": [0, 3]}, {"X": [1, 3]}, {"D": [3, 7]}]) ➞ trueObservações
- Você pode ler sobre mais tópicos relacionados à recursão (consulte a aba Recursos) se ainda não estiver familiarizado com ela ou se ainda não tiver entendido completamente o conceito antes de tentar este desafio.
- Se você acha recursão divertida, pode encontrar uma coleção desses desafios aqui.