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

85
Vistas
cómo obtener un nuevo objeto de matriz basado en una condición como si la clave existiera en javascript

Me gustaría saber cómo crear un nuevo objeto de matriz si la clave existe en JavaScript.

Tengo dos objetos de matriz, arr1 y arr2 . En arr2 , si el valor de c es verdadero y la clave de arr1 y un valor son iguales, insértelo en un nuevo objeto de matriz. Si arr2 de clave-valor es verdadero y coincide con la clave de arr1 , entonces empuje a una nueva matriz en JavaScript.

 var arr1 = { data:[ {id:1, place: "IN", year: "2020", mode: "ON"}, {id:3, place: "TH", year: "2022", mode: "OFF"}, {id:5, place: "AU", year: "2025", mode: "ON"} ] }; var arr2=[ {a: "place", c: true}, {a: "year", c: true}, {a: "mode", c: false}, ] var finals = []; var result = arr1.data.map(e=>{ arr2.forEach(i=>{ if(ic == true && Object.keys(e)){ finals.push(e); } }) return finals })

Rendimiento esperado:

 [ {place: "IN", year: "2020"} {place: "TH", year: "2022"}, {place: "AU", year: "2025"} ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Casi estabas allí.

  1. arr1.data.map crea una nueva matriz,
  2. para cada elemento en arr1, cree un nuevo objeto newObj ,
  3. bucle sobre cada clave en arr2
  4. agregue key.a con el valor correspondiente en item , si key.c es verdadero
  5. volver newObj

 var arr1 = { data:[ {id:1, place: "IN", year: "2020", mode: "ON"}, {id:3, place: "TH", year: "2022", mode: "OFF"}, {id:5, place: "AU", year: "2025", mode: "ON"} ] }; var arr2=[ {a: "place", c: true}, {a: "year", c: true}, {a: "mode", c: false}, ]; var result = arr1.data.map(item => { // 1 let newObj = {}; // 2 arr2.forEach(key => { // 3 if (key.c) { // 4 newObj[key.a] = item[key.a] } }); return newObj // 5 }) console.log(result)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lógica

  • Obtenga las claves requeridas de arr2 con la condición node.c === true .
  • map a través de arr1.data de cada objeto en esta matriz, cree un nuevo objeto con las claves que obtuvimos de la lógica anterior.
  • Esta lista agregada le dará el resultado requerido.

 var arr1 = { data: [ { id: 1, place: "IN", year: "2020", mode: "ON" }, { id: 3, place: "TH", year: "2022", mode: "OFF" }, { id: 5, place: "AU", year: "2025", mode: "ON" } ] } var arr2 = [ { a: "place", c: true }, { a: "year", c: true }, { a: "mode", c: false }, ]; const keys = arr2.filter((node) => node.c).map((node) => node.a); var result = arr1.data.map(e => { const obj = keys.reduce((acc, curr) => { acc[curr] = e[curr]; return acc; }, {}); return obj; }) console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Se puede hacer usando .map() y .reduce() :

 var arr1 = { data: [ {id: 1, place: "IN", year: "2020", mode: "ON"}, {id: 3, place: "TH", year: "2022", mode: "OFF" }, {id: 5, place: "AU", year: "2025", mode: "ON" }, ] }; var arr2 = [ {a: "place", c: true}, {a: "year", c: true}, {a: "mode", c: false}, ]; const result = arr1.data.map(item => Object.keys(item).reduce((acc, key) => { const isEnabled = arr2.some(({a, c}) => a === key && c === true); return isEnabled ? { ...acc, [key]: item[key]} : acc; }, {}) ); console.log(result);

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