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

213
Vistas
Update the count value in an array

I have two array of objects arr 1 and arr 2
arr1 = [{fruit: 'apple',count: 0}] arr2 = [{fruit: 'apple',count: 0}]

Need to create the function which accepts arr1 and arr2 as arguments and compare the fruit name if its same need to update the count value based on the count input else push the value to the array

sample output 1:

Inputs: arr1 = [{fruit: 'apple',count: 10}] arr2 = [{fruit: 'apple',count: 30},{fruit: 'orange',count: 20}]

Output: [{fruit: 'apple',count: 40},{fruit: 'orange',count: 20}]

sample output2

Inputs: arr1 = [{fruit: 'apple',count: 15}] arr2 = [{fruit: 'orange',count: 20}]

Output: [{fruit: 'apple',count: 15},{fruit: 'orange',count: 20}]

code that i have tried:

function compareAndUpdateCount(arr1, arr2) {
    for (i = 0; i < arr1.length; i++) {
        if (arr1[i].fruit === arr2[i].fruit) {
            arr1[i].count = arr1[i].count + arr2[i].count;
        } else {
            arr1.push(arr2[i])
        }
    }
}

This works fine when the array lengths are same ,if its different need help on writing the optimise code and also the reduce time complexity if we have more data

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

0

Loop within another loop to compare all object properties and then use an if statement to sum up the counter and remove the item of the second array using splice()

Try the following snippet:

var arr1 = [{fruit: 'apple',count: 10}];
var arr2 = [{fruit: 'apple',count: 30}, {fruit: 'orange',count: 20}, {fruit: 'apple',count: 20}, {fruit: 'banana',count: 20}];
var counter = 0;

for(obj1 in arr1){
  for(obj2 in arr2){
    if (arr1[obj1].fruit === arr2[obj2].fruit) {
      arr1[obj1].count = arr1[obj1].count + arr2[obj2].count;
      arr2.splice(counter, 1);
      counter++;
    }
  } 
}
arr1 = arr1.concat(arr2);
console.log(arr1)

about 4 years ago · Juan Pablo Isaza Denunciar

0

var result;
if(arr1.length < 1) {
    result = arr2;
} else if(arr2.length < 1) {
    result = arr1;
} else {
var existing = [];
var arr3 = [];
    arr1.forEach(function (item, index) {
      arr2.forEach(function (item2, index2) {
        if(item.fruit === item2.fruit) {
            item.count = item.count + item2.count;
            existing.push(index2);
        } else {
        arr3.push(item);
        if(!existing.includes(index2)) {
            arr3.push(item2);
        }        
        }
      });
    });
    result = arr3;
}
about 4 years ago · Juan Pablo Isaza Denunciar

0

You will need a setter for count in your class Make a new array of objects temparr

        temparr[0] = arr1[0];
        if((arr1[0].fruit).equals(arr2[0].fruit)) {
            temparr[0].setcount(arr1[0].count+arr2[0].count);
        }
        else {
            temparr[1]=arr2[0];
        }

At the end u print temparr

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