RRR
RRR

Reputation: 21

How to iterate an array of objects

I need to go through an array of objects and return an array that contains the "taxNumber" ordered by the names. How could I do it?

const paddockManagers = 
  [ { id: 1, taxNumber: '132254524', name: 'JUAN TAPIA BURGOS'         } 
  , { id: 2, taxNumber: '143618668', name: 'EFRAIN SOTO VERA'          } 
  , { id: 3, taxNumber: '78903228',  name: 'CARLOS PEREZ GONZALEZ'     } 
  , { id: 4, taxNumber: '176812737', name: 'ANDRES VIÑALES CIENFUEGOS' } 
  , { id: 5, taxNumber: '216352696', name: 'OSCAR PEREZ ZUÑIGA'        } 
  , { id: 6, taxNumber: '78684747',  name: 'JOAQUIN ANDRADE SANDOVAL'  } 
  ] 

function listPaddockManagersByName() {
  return paddockManagers.map((paddockManager) =>
    addockManager.name + paddockManager.taxNumber)
};

Upvotes: 1

Views: 1268

Answers (2)

Spectric
Spectric

Reputation: 32007

Use Array.sort and String.localCompare to sort the array lexographically (by the name property), then map over the result to get the taxNumber property.

const paddockManagers = [

{ id: 1, taxNumber: '132254524', name: 'JUAN TAPIA BURGOS'},

{ id: 2, taxNumber: '143618668', name: 'EFRAIN SOTO VERA'},

{ id: 3, taxNumber: '78903228', name: 'CARLOS PEREZ GONZALEZ'},

{ id: 4, taxNumber: '176812737', name: 'ANDRES VIÑALES CIENFUEGOS'},

{ id: 5, taxNumber: '216352696', name: 'OSCAR PEREZ ZUÑIGA'},

{ id: 6, taxNumber: '78684747', name: 'JOAQUIN ANDRADE SANDOVAL' }
];

const result = paddockManagers.sort((a, b) => a.name.localeCompare(b.name)).map(e => e.taxNumber)
console.log(result);

Upvotes: 3

Mister Jojo
Mister Jojo

Reputation: 22310

sort method will change your array initial order.
If you want to preserve this initial order, you need to duplicate your array first ( .map() )

const paddockManagers = 
  [ { id: 1, taxNumber: '132254524', name: 'JUAN TAPIA BURGOS'         } 
  , { id: 2, taxNumber: '143618668', name: 'EFRAIN SOTO VERA'          } 
  , { id: 3, taxNumber: '78903228',  name: 'CARLOS PEREZ GONZALEZ'     } 
  , { id: 4, taxNumber: '176812737', name: 'ANDRES VIÑALES CIENFUEGOS' } 
  , { id: 5, taxNumber: '216352696', name: 'OSCAR PEREZ ZUÑIGA'        } 
  , { id: 6, taxNumber: '78684747',  name: 'JOAQUIN ANDRADE SANDOVAL'  } 
  ] 

const listPaddockManagersByName = arr =>
   arr
    .map(row=>row)
    .sort((a,b)=>a.name.localeCompare(b.name))
    .map(({name,taxNumber}) => `${name}, ${taxNumber}`)

let result = listPaddockManagersByName( paddockManagers )

console.log( paddockManagers )
console.log( result )
.as-console-wrapper { max-height: 100% !important; top: 0 }

Upvotes: 0

Related Questions