1

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)
};
2
  • 2
    Do you want to sort it? How exactly do you want to sort it? You just said ordered by the names but you didn’t say how Commented Aug 6, 2021 at 16:37
  • 2
    Do you want to sort the array by name? The code you have returns a list of the names concatenated with the tax number. You could also sort that, just by appending .sort()... Commented Aug 6, 2021 at 16:37

2 Answers 2

3

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);

Sign up to request clarification or add additional context in comments.

Comments

0

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 }

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.