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

110
Vistas
Filter Object based on Keys and compare with array

I currently have an object containing key with multiple values.

I also have an array containing a simple key check i.e. ["random", "three"].

I want to return mainData but only with the object and the data from whats in the array i.e. ["random", "three"]

Current Code:

const mainData = {
    random: {
        name: "Random Entity",
        date: "05/04/2022",
        startTime: "19:00",
        finishTime: "00:00",
    },
    one: {
        name: "One Entity",
        date: "16/04/2022",
        startTime: "16:00",
        finishTime: "20:00",
    },
    three: {
        name: "Three Entity",
        date: "19/04/2022",
        startTime: "10:00",
        finishTime: "11:00",
    },
};

export default mainData;

Desired Output

const mainData = {
    random: {
        name: "Random Entity",
        date: "05/04/2022",
        startTime: "19:00",
        finishTime: "00:00",
    },
    three: {
        name: "Three Entity",
        date: "19/04/2022",
        startTime: "10:00",
        finishTime: "11:00",
    },
};

Attempt:

let filterKey = 'random';
const result = Object.entries(mainData).filter(([k, v]) => k== filterKey);

This works only as a single search, not an array search.

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

0

Map the array to an entries array ([[key,val],[key,val],...]) and pass it through Object.fromEntries()

const mainData = {"random":{"name":"Random Entity","date":"05/04/2022","startTime":"19:00","finishTime":"00:00"},"one":{"name":"One Entity","date":"16/04/2022","startTime":"16:00","finishTime":"20:00"},"three":{"name":"Three Entity","date":"19/04/2022","startTime":"10:00","finishTime":"11:00"}}

const filters = ["random", "nope", "three"]

const result = Object.fromEntries(
  filters
    .filter(
      key => key in mainData // only include keys that exist in mainData
    ) 
    .map(
      key => [ key, mainData[key] ]
    )
)

console.log(result)
.as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

If you know the keys you'd like to exclude you can use this approach:

const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, one: { name: "One Entity", date: "16/04/2022", startTime: "16:00", finishTime: "20:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00" } };

const {one, ...desiredData} = mainData;

console.log( desiredData );

Alternatively, if you have the filter keys, you can map() the keys to [key, value], from [key,mainData[key]], then create an object from these key-value pairs using Object.fromEntries() as in the demo below:

const mainData = { random: { name: "Random Entity", date: "05/04/2022", startTime: "19:00", finishTime: "00:00", }, one: { name: "One Entity", date: "16/04/2022", startTime: "16:00", finishTime: "20:00", }, three: { name: "Three Entity", date: "19/04/2022", startTime: "10:00", finishTime: "11:00" } };

const desiredData = Object.fromEntries( ["random", "three"].map(f => [f, mainData[f]]) );

console.log( desiredData );

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