Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

304
Vistas
Cómo verificar si un valor en una matriz está presente en otro objeto y, en consecuencia, devolver un nuevo objeto

tengo una matriz

 const dataCheck = ["Rohit","Ravi"];

Tengo otra matriz de objetos.

 const userData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit" }, { name: "Ravi" }, ];

Quiero verificar si algún valor en dataCheck está presente en los datos de usuario y luego devolver una nueva matriz con los datos a continuación

 const newData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit", status: "present" }, { name: "Ravi", status: "present" }, ];

Intenté hacer algo usando bucles pero no obtuve los resultados esperados.

 const dataCheck = ["Rohit", "Ravi"]; const userData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit" }, { name: "Ravi" } ]; let newDataValue = {}; let newData = []; userData.forEach((user) => { const name = user.name; dataCheck.forEach((userName) => { if (name === userName) { newDataValue = { name: name, status: "present" }; } else { newDataValue = { name: name }; } newData.push(newDataValue); }); }); console.log(newData);

Mi prueba me da resultados repetidos múltiples resultados que son solo duplicados

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Deberías usar map() y un Set .

 const dataCheck = ["Rohit","Ravi"]; const userData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit" }, { name: "Ravi" }, ]; const set = new Set(dataCheck); const output = userData.map(data => set.has(data.name) ? ({...data, status: "present"}): data) console.log(output)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Un Set permite búsquedas en tiempo O(1) y, por lo tanto, este algoritmo funciona en tiempo O(n) . Si usara la matriz para búsquedas (por ejemplo, usando indcludes() , find() etc.) el tiempo de ejecución sería O(n²) . Aunque esto ciertamente no importará en absoluto para arreglos tan pequeños, se volverá más relevante cuanto más grande sea el arreglo.

map() se usa aquí porque desea un mapeo 1:1 de entradas a salidas. Lo único que hay que determinar entonces es cuál debe ser la salida. Es la entrada, si el valor no está en el Set , o es la entrada extendida por un status de propiedad establecido en "present" . Puede verificar la presencia en un Set usando el método has() y puede usar el ternary operator ? para tomar la decisión de qué caso es.

about 4 years ago · Juan Pablo Isaza Denunciar

0

userData , verifique si el nombre está incluido en dataCheck . Si es true , agregue el estado 'presente'.

 const dataCheck = ["Rohit","Ravi"]; const userData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit" }, { name: "Ravi" }, ]; for (let user of userData) { if(dataCheck.includes(user.name)) { user.status = 'present' } } console.log(userData)

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const dataCheck = ["Rohit", "Ravi"]; const userData = [ { name: "Sagar" }, { name: "Vishal" }, { name: "Rohit" }, { name: "Ravi" }, ]; // map through every object and check if name property // exists in data check with help of filter. // if it exists the length of filter should be 1 so // you should return { name: el.name, status: "present" } else // return { name: el.name } let newData = userData.map((el) => { if (dataCheck.filter((name) => name === el.name).length > 0) { return { name: el.name, status: "present" }; } else { return { name: el.name }; } }); console.log("newdata: ", newData);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda