Cómo combinar una matriz en javascript
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]
}
]
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);
}
¿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!