Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

143
Views
¿Cómo actualizo todos los valores de un objeto en una matriz?

¿Cómo cambio todos los valores de salario y los aumento en un porcentaje, cuando cada salario es una propiedad de un objeto, y cada objeto se almacena en una matriz? Por ejemplo, aumentando en un 10 por ciento y tengo que redondear el resultado al entero más cercano:

 raiseSalary([ { name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }, ], 10)

La llamada anterior debería devolver:

 [ { name: 'Ali', salary: 3300 }, { name: 'Rob', salary: 2200 }, { name: 'Adam', salary: 4950 } ]

Este es el código que he escrito:

 function raiseSalary(arr, raise) { if (arr.length === 0) { return [{}]; } else { const raiseArray = arr.map((salaryObj) => { return (salaryObj.salaryObj / 100) * 10; }); } }
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

El método del mapa debe hacer lo que quieras. Tenga en cuenta la desestructuración de salarioObj para evitar manipular el objeto original.

 const percent = 10; const multiplier = 1 + (percent / 100); const salaries = [ { name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }, ]; const newSalaries = salaries.map((salaryObj) => { return { ...salaryObj, salary: salaryObj.salary * multiplier, }; }); console.log(newSalaries);
about 4 years ago · Juan Pablo Isaza Report

0

A continuación se presenta una posible forma de lograr el objetivo deseado.

Fragmento de código

 const addRaise = (arr, pcnt) => ( arr.map( ({ salary, ...rest }) => ({ ...rest, salary: ( +salary * (+pcnt + 100) / 100 ) }) ) ); /* // method to raise salary by "pcnt" percent const addRaise = (arr, pcnt) => ( // iterate over array "arr" arr.map( // destructure to access "salary" ({ salary, ...rest }) => ({ ...rest, // all other props retained as-is // salary updated to be 10% more than current salary: ( +salary * (+pcnt + 100) / 100 ) }) ) ); */ const dataArr = [{ name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }, ]; console.log( 'adding raise of 10%...\n', 'new array:\n', addRaise(dataArr, 10) );

Explicación

Comentarios agregados al fragmento anterior.

about 4 years ago · Juan Pablo Isaza Report

0

Ya casi estás ahí. solo algunos puntos

  • Así como devuelve algo cuando la matriz tiene cero elementos, debe devolver algo cuando tiene elementos; en este caso la matriz modificada
  • Retenga los objetos usando sus claves y proporcionando los datos; de lo contrario, terminará con una matriz de solo números.
  • Dado que su objetivo es aumentar el salario por raise , en lugar de multiplicar por el raise , en este caso 10 , multiplique por 100+raise
  • No tiene que codificar de forma rígida el raise ya que lo está pasando a la función; le permite pasar 5 , o 15 o algún otro valor elevado sin cambiar su función.

 const input = [{ name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }], increment = 10; function raiseSalary(arr, raise) { if (arr.length === 0) { return []; } else { return arr.map((salaryObj) => { return ({name:salaryObj.name, salary:(salaryObj.salary / 100) * (100+raise)}); }); } } console.log( raiseSalary(input, increment) );

Alternativamente...

Simplemente devuelva la matriz modificada sin probar los elementos, y también puede usar la desestructuración de objetos.

 const input = [{ name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }], increment = 10; function raiseSalary(arr, raise) { return arr.map(({name,salary}) => { return ({name, salary: salary/100*(100+raise)}); }); } console.log( raiseSalary(input, increment) ); console.log( raiseSalary([], increment) );

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!