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

118
Vistas
Javascript check if object is in another object and match length to other objects keys

I apologize for the title. I'm not really sure how to best word this as I'm still learning Javascript.

I have an object of dates that have an occurence of dynamic values as follows: (Key = date, value = number)

2021-12-23: 4
2021-12-24: 7
2021-12-27: 6
2022-01-05: 5
... etc

I also have another object that looks something like this:

2022-01-05: 5

Basically, I need the second object to populate 0 for all non-matching keys. For example, the second object would need to look as follows (where the value of the match does not matter):

2021-12-23: 0
2021-12-24: 0
202-12-27: 0
2022-01-05: 5

I'm really stumped on this one, any javascript help would be immensely appreciated.

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

0

Here's an implementation using Object.entries and Array.prototype.reduce but there are actually a lot of way to approach this.

const original = {
  "2021-12-23": 4,
  "2021-12-24": 7,
  "2021-12-27": 6,
  "2022-01-05": 5
}
function filterObjectByKey( o, key ){
  return Object.entries(o).reduce((acc, [k,v])=>{
    acc[k] = ( k === key ) ? v : 0;
    return acc;
  }, {});
}
const filtered = filterObjectByKey( original, "2022-01-05");

console.log( filtered );

Updated: The function can also accept the secondary object as an argument and filter based on its keys:

const original = {
  "2021-12-23": 4,
  "2021-12-24": 7,
  "2021-12-27": 6,
  "2022-01-05": 5
}
const secondary = {
  "2022-01-05": 5
}
function filterObjectByKey( o, sec ){
  const keys = Object.keys(sec);
  return Object.entries(o).reduce((acc, [k,v])=>{
    acc[k] = keys.includes(k) ? v : 0;
    return acc;
  }, {});
}
const filtered = filterObjectByKey( original, secondary );

console.log( filtered );

about 4 years ago · Juan Pablo Isaza Denunciar

0

Perhaps you could use some form of iteration with coalescing operator (||)...

someObjArray.forEach(function(x) {
    return {
        // if the obj does not have key/value pair for that date, it will use 0 (the value to the right of ||)
        2021-12-23: (x['2021-12-23'] || 0),
        2021-12-24: (x['2021-12-24'] || 0),
        2021-12-27: (x['2021-12-27'] || 0),
        2022-01-05: (x['2021-01-05'] || 0)
    }
 });
about 4 years ago · Juan Pablo Isaza Denunciar

0

OK so what you want to do in order to achieve this is loop through all the keys of the first object (the one with the several DateString keys/Number values) and set the new numeric value to be 0 if that key is not included in the second object.

From your description:

const firstObject = {
2021-12-23: 4,
2021-12-24: 7,
2021-12-27: 6,
2022-01-05: 5
}
const secondObject = {
2022-01-05: 5
}

seems like the code here would benefit from Object.entries which is a function that you can run on an object Object.entries(myObject || {}) and it will return a 2-d array of the Object's [[key, val], [key, val]].

So your final code will look like:

const mapTo0s = (firstObject, secondObject) => {
  return Object.fromEntries(Object.entries(firstObject).map(([dateString, value]) => {
if (!secondObject[dateString]) {
  return [dateString, 0];
}
return [dateString, value]; // assumes you want to keep the value as is when the secondObject has the value.
}))
};

Object.fromEntries is another javascript method which converts a 2-d array of arrays to an object with corresponding keys. So if you send in [['05-10-2021', 3]] it will return {'05-10-2021': 3 }.

You can run that function like this:


const result = mapTo0s(firstObject, secondObject)
// should result in:
console.log({ result })
/* { result: {
2021-12-23: 0,
2021-12-24: 0,
202-12-27: 0,
2022-01-05: 5
}
}
*/
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