Estoy aprendiendo js ahora (lo sé tarde para la fiesta) y tengo el siguiente código y me preguntaba si podría escribirse de una manera más limpia/simple.
Además, idealmente, en lugar de usar "if (obj.id === 1)", me gustaría iterar a través de la matriz y agregar la edad según la secuencia, es decir, [0] se convertiría en '32' y así sucesivamente.
const students = [ // Three objects, each with four properties { id: 1, name: 'Mark', profession: 'Developer', skill: 'JavaScript' }, { id: 2, name: 'Ariel', profession: 'Developer', skill: 'HTML' }, { id: 3, name: 'Jason', profession: 'Designer', skill: 'CSS' }, ]; const studentsWithAge = students.map(obj => { if (obj.id === 1) { return {...obj, age: '32'}; } else if (obj.id === 2) { return {...obj, age: '26'}; } else if (obj.id === 3) { return {...obj, age: '28'}; } return obj; }); console.log(studentsWithAge); // output // [ // { // id: 1, // name: 'Mark', // profession: 'Developer', // skill: 'JavaScript', // age: '32' // }, // { // id: 2, // name: 'Ariel', // profession: 'Developer', // skill: 'HTML', // age: '26' // }, // { // id: 3, // name: 'Jason', // profession: 'Designer', // skill: 'CSS', // age: '28' // } // ]Puede mapear la matriz en el objeto de esta manera:
const ages = ['32', '26', '28']; const studentsWithAge = students.map(obj => { ...obj, age: ages[obj.id-1] });Puede crear una matriz ages y usar el índice para asignar el valor al objeto correspondiente.
const students = [ // Three objects, each with four properties { id: 1, name: 'Mark', profession: 'Developer', skill: 'JavaScript' }, { id: 2, name: 'Ariel', profession: 'Developer', skill: 'HTML' }, { id: 3, name: 'Jason', profession: 'Designer', skill: 'CSS' }, ]; const ages = [32, 26, 28]; const result = students.map((s, i) => { return { ...s, age: ages[i] } }); console.log(result);Su código es verdadero, otra forma de agregar edades por la identificación es el siguiente código. Simplemente use id s como clave de objeto y edad como valor.
El siguiente código verifica si la id existe en la const de ages luego la agrega a studentsWithAge . Funciona exactamente como su código.
const ages = {1: '32', 2: '26', 3: '28'}; const studentsWithAge = students.map(obj => { if(ages[obj.id]) obj.age = ages[obj.id]; return obj; });Pero si está seguro de que todas las identificaciones tienen un valor de edad, se podría usar un código más simple como este:
const ages = {1: '32', 2: '26', 3: '28'}; const studentsWithAge = students.map(obj => ({...obj, age: ages[obj.id]}));