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

110
Views
Cómo buscar ambas propiedades de objeto

Codificador muy novato aquí y actualmente estoy aprendiendo JavaScript. Estoy tratando de ejecutar un código Object.keys() para devolver las 'habilidades' de las personas en el Objeto de los usuarios y encontrar quién tiene más habilidades según el resultado. Cuando ejecuto mi código, sigo recibiendo "Error de tipo no detectado: no se pueden leer las propiedades de undefined (leyendo 'habilidades')". No tengo idea de cómo acceder a los valores de la clave de habilidades sin buscar a cada usuario individualmente. Aquí está el código con el que estoy trabajando:

 const users = { Alex: { email: 'alex@alex.com', skills: ['HTML', 'CSS', 'JavaScript'], age: 20, isLoggedIn: false, points: 30 }, Asab: { email: 'asab@asab.com', skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], age: 25, isLoggedIn: false, points: 50 }, } const names = Object.keys(users) const userSkills = Object.keys(users.names.skills) console.log(userSkills) //The above doesn't work, however this does: const alexSkills = Object.keys(users.Alex.skills) console.log(alexSkills) //3 const asabSkills = Object.keys(users.Asab.skills) console.log(asabSkills) //8 (console.log(Object.keys(users.Alex.Skills)) //alternate format I've used, but I'm asked to do the former.)

¿Hay alguna manera de acceder y mostrar la clave de habilidades en la que no tenga que buscar cada propiedad individualmente para encontrarlas? Sé que obtendré la respuesta con la búsqueda individual, pero hacer esto para un objeto con una gran cantidad de propiedades llevaría demasiado tiempo y me gustaría aprender un método más rápido. ¡Cualquier ayuda es apreciada!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Hay muchas maneras de hacerlo y usemos Object.keys y un solo bucle for para hacerlo.

 const keys = Object.keys(users); for(let i=0; i<keys.length; i++){ let user = keys[i]; //Alex or Asab let skills = users[user].skills; let skill_count = skills.length; console.log(`${user} has ${skill_count} skills.`) }
about 4 years ago · Juan Pablo Isaza Report

0

Debe tener cuidado con las claves que está usando y cómo usa el valor devuelto por Object.keys (que será una matriz).

Si simplemente recorre cada lista de habilidades para cada usuario, la complejidad temporal del algoritmo será O(m*n), donde m representa la cantidad de usuarios y n representa la cantidad de habilidades por usuario.

Si desea que la búsqueda de una habilidad sea más eficiente, puede mantener ordenadas las listas de habilidades y luego usar un algoritmo de búsqueda para encontrar la habilidad.

 const users = { Alex: { email: 'alex@alex.com', skills: ['HTML', 'CSS', 'JavaScript'], age: 20, isLoggedIn: false, points: 30 }, Asab: { email: 'asab@asab.com', skills: ['HTML', 'CSS', 'JavaScript', 'Redux', 'MongoDB', 'Express', 'React', 'Node'], age: 25, isLoggedIn: false, points: 50 }, } const names = Object.keys(users) console.log(names) // 'Alex', 'Asab' const userSkills = users[names[0]].skills.join(', ') console.log(userSkills) // 'HTML, CSS, JavaScript' function getUserSkills(user) { return users[user].skills.join(', ') } console.log(getUserSkills('Alex')) // 'HTML, CSS, JavaScript' function usersWithSkill(users, skill) { const userNames = Object.keys(users) const result = [] for(let x = 0; x < userNames.length; x++) { const currentUser = users[userNames[x]] const currentUserSkills = currentUser.skills for(let y = 0; y < currentUserSkills.length; y++) { if(currentUserSkills[y] === skill) { result.push(userNames[x]) break } } } return result.length ? result.join(', ') : 'Skill not found' } console.log(usersWithSkill(users, 'CSS')) // 'Alex, Asab' console.log(usersWithSkill(users, 'MongoDB')) // 'Asab' console.log(usersWithSkill(users, 'C')) // 'Skill not found'

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!