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

133
Views
Encuentre los duplicados en la matriz y agregue el valor de esos índices de otra matriz

tengo tres arreglos

 product_id = []; product_category_id =[]; product_amount =[];

en esto, las matrices son dinámicas ya que provienen de la selección del usuario. Pero lo que quiero hacer es si las identificaciones de los productos son las mismas, quiero agregar las cantidades de los productos y tomar el total con la identificación del producto, la identificación de la categoría y la cantidad total.

Como ejemplo si

 product_id = [4,5,1,3,5]; product_category_id =[2,2,1,3,2]; product_amount =[3000,4000,5000,5000,4000];

y aquí lo que quiero como salida es

 product_id || product_category_id || product_new_amount 4 2 3000 5 2 8000 1 1 5000 3 3 5000
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Hay muchas maneras de lograr su objetivo, dependiendo de cómo desee utilizar los datos. Si las matrices siempre tienen la misma longitud, esencialmente lo que debe hacer es crear una nueva matriz de objetos, comprobando si la combinación product_id y product_category_id ya se ha agregado. Si es así, agrega la cantidad del producto a esa entrada, y si no, crea una nueva entrada a los datos.

Una vez que los datos están organizados en una matriz, puede hacer lo que quiera con ellos. Llené una tabla con los datos como una demostración simple.

espero que esto lo dirija en la dirección correcta 👍 si tiene alguna pregunta sobre mi código, por favor pregunte.

 const product_id = [4,5,1,3,5]; const product_category_id = [2,2,1,3,2]; const product_amount = [3000,4000,5000,5000,4000]; const productData = []; //format data for (let i = 0; i < product_id.length; i++) { const pid = product_id[i]; const pcid = product_category_id[i]; const prodAmt = product_amount[i]; const target = productData.find(data => data.pid == pid && data.pcid == pcid); if (target) target.prodAmt += prodAmt; else productData.push({pid, pcid, prodAmt}); } //create rows const table = document.querySelector("table"); for (const data of productData) { const tr = document.createElement("tr"); const values = Object.values(data); for (const value of values) { const td = document.createElement("td"); td.innerText = value; tr.appendChild(td); } table.appendChild(tr); }
 <table> <tr> <th>product_id</th> <th>product_category_id</th> <th>product_new_amount</th> </tr> </table>

about 4 years ago · Juan Pablo Isaza Report

0

Esta solución puede ayudarte. Por favor, prueba esto:

 const product_id = [4,5,1,3,5]; const product_category_id =[2,2,1,3,2]; const product_amount =[3000,4000,5000,5000,4000]; function find_duplicate_in_array(array){ const count = {}; const category_id = {}; const amount = {}; const result = []; array.forEach((item,index) => { if (count[item]) { count[item] +=1; amount[item] += product_amount[index]; return } count[item] = 1; amount[item] = product_amount[index]; category_id[item] = product_category_id[index]; }); for(let prop in count){ result.push({product_id:prop,product_category_id:category_id[prop],product_new_amount:amount[prop]}) } console.log('result---->', result); return result; } find_duplicate_in_array(product_id);
about 4 years ago · Juan Pablo Isaza Report

0

Primero, haga objetos a partir de sus arreglos.

 product_id = [4,5,1,3,5]; product_category_id =[2,2,1,3,2]; product_amount =[3000,4000,5000,5000,4000]; function Item(i,ci,a) { this.id=i; this.category_id=ci; this.amount=a; } obj=[]; product_id.forEach((v,k)=>{obj.push(new Item(product_id[k],product_category_id[k],product_amount[k]))}); document.write(JSON.stringify(obj),'<br>'); document.write('<br>');

A continuación, cree dos Map , uno para el emparejamiento id:amount y el otro para la relación id:category .

Ejecute las cantidades y, si la clave ya existe, agréguele el nuevo valor. De lo contrario, actualice ambos Map con la nueva clave y el valor respectivo.

 m=new Map(); m2=new Map(); obj.forEach(o=>{ if (m.has(o.id)) m.set(o.id,m.get(o.id)+o.amount); else { m.set(o.id,o.amount); m2.set(o.id,o.category_id); } });

Finalmente, visualice los datos, teniendo cuidado de utilizar el Map correcto.

 m.forEach((v,k)=>document.write(k+', '+m2.get(k)+', '+v,'<br>'));

Ponlo junto:

 product_id = [4,5,1,3,5]; product_category_id =[2,2,1,3,2]; product_amount =[3000,4000,5000,5000,4000]; function Item(i,ci,a) { this.id=i; this.category_id=ci; this.amount=a; } obj=[]; product_id.forEach((v,k)=>{obj.push(new Item(product_id[k],product_category_id[k],product_amount[k]))}); document.write(JSON.stringify(obj),'<br>'); document.write('<br>'); m=new Map(); m2=new Map(); obj.forEach(o=>{ if (m.has(o.id)) m.set(o.id,m.get(o.id)+o.amount); else { m.set(o.id,o.amount); m2.set(o.id,o.category_id); } }); m.forEach((v,k)=>document.write(k+', '+m2.get(k)+', '+v,'<br>'));

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!