Cómo combinar una matriz en javascript

Resuelto Moiz asked hace 10 años • 3 respuestas

Hola, quiero fusionar una matriz basada en el elemento único de la matriz.

El objeto que tengo

totalCells = []

En este array totalCells tengo varios objetos como este

totalCells = [
  {
    cellwidth: 15.552999999999999,
    lineNumber: 1
  }, 
  {
    cellwidth: 14,
    lineNumber: 2
  },
  {
    cellwidth: 14.552999999999999,
    lineNumber: 2
  }, 
  {
    cellwidth: 14,
    lineNumber: 1
  }
];

Ahora quiero hacer una matriz donde tenga una combinación de matriz basada en el número de línea.

Como si tuviera un objeto con la propiedad lineNumber y la colección cellWidth. Puedo hacer esto ?

Puedo recorrer cada fila y verificar si el número de línea es el mismo y luego presionar ese ancho de celda. ¿Hay alguna manera de que pueda entenderlo?

Estoy intentando obtener un resultado como este.

totalCells = [
{
  lineNumber : 1,
  cells : [15,16,14]
},
{
  lineNumber : 2,
  cells : [17,18,14]
}
]
Moiz avatar Jun 19 '14 15:06 Moiz
Aceptado
var newCells = [];
for (var i = 0; i < totalCells.length; i++) {
    var lineNumber = totalCells[i].lineNumber;
    if (!newCells[lineNumber]) { // Add new object to result
        newCells[lineNumber] = {
            lineNumber: lineNumber,
            cellWidth: []
        };
    }
    // Add this cellWidth to object
    newcells[lineNumber].cellWidth.push(totalCells[i].cellWidth);
}
Barmar avatar Jun 19 '2014 09:06 Barmar

¿Qué tal algo como esto?

totalCells.reduce(function(a, b) {
  if(!a[b.lineNumber]){
    a[b.lineNumber] = {
      lineNumber: b.lineNumber,
      cells: [b.cellwidth]
    }
  }
  else{
    a[b.lineNumber].cells.push(b.cellwidth);
  }
  return a;
}, []);

¡Espero que esto ayude!

Thomas Eschemann avatar Jun 19 '2014 09:06 Thomas Eschemann