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

301
Views
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 answers
Answer question

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 Report

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 Report

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 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!