Loading ...

Comparare oggetti in Javascript

Comparare oggetti in Javascript

Praticamente abbiamo un array di oggetti di questo tipo, e vogliamo fare una comparazione per nome (ad esempio):

        const arrObj = [
            {nome: 'paola', eta: 33},
            {nome: 'gina', eta: 40},
            {nome: 'franceso', eta: 31},
        ];

Javascript ci mette a disposizione il metodo sort, al quale volendo possiamo passare una funzione di comparazione custom.

Facendo un esempio basico, il tutto potrebbe essere questo:

        const arrObj = [
            {nome: 'paola', eta: 33},
            {nome: 'gina', eta: 40},
            {nome: 'franceso', eta: 31},
        ];

        function compare(obj1, obj2) {
            const nome1 = obj1.nome.toUpperCase();
            const nome2 = obj2.nome.toUpperCase();

            var result = 0;
            if (nome1 > nome2) {
                result = 1;
            } else if (nome1 < nome2) {
                result = -1;
            }

            return result;
        }

        console.log(arrObj.sort(compare));

Ovviamente la funzione compare è abbastanza statica, in quanto decidiamo a priori cosa comparare.

Quindi come esecizio potreste migliorarla, e passargli sia cosa comparare, che come compararlo (ascendente o discendente).

Enjoy!