when const mergeTable=[2], valor de retorno de función esperado
{ rowSpan: 2 } { rowSpan: 0 }cuando const mergeTable=[2,3]; Valor de retorno esperado de la función
{ rowSpan: 2 } { rowSpan: 0 } { rowSpan: 3 } { rowSpan: 0 } { rowSpan: 0 }cuando const mergeTable=[2,3,3,2]; Valor de retorno esperado de la función
{ rowSpan: 2 } { rowSpan: 0 } { rowSpan: 3 } { rowSpan: 0 } { rowSpan: 0 } { rowSpan: 3 } { rowSpan: 0 } { rowSpan: 0 } { rowSpan: 2 } { rowSpan: 0 }funciones que deben optimizarse, la función ha sido implementada, el código es redundante, cómo optimizar
const mergeTable = [2, 3, 3, 2]; // test ok // How to simplify this function function renderRowSpan(index) { for (let i in mergeTable) { i = Number(i); if (i === 0) { if (index === 0) { return { rowSpan: mergeTable[0] }; } else if (index < mergeTable[0]) { return { rowSpan: 0 }; } } if (i === 1) { if (index === mergeTable[0]) { return { rowSpan: mergeTable[1] }; } if (index < mergeTable[0] + mergeTable[1]) { return { rowSpan: 0 }; } } if (i === 2) { if (index === mergeTable[0] + mergeTable[1]) { return { rowSpan: mergeTable[2] }; } if (index < mergeTable[0] + mergeTable[1] + mergeTable[2]) { return { rowSpan: 0 }; } } if (i === 3) { if (index === mergeTable[0] + mergeTable[1] + mergeTable[2]) { return { rowSpan: mergeTable[3] }; } if ( index < (mergeTable[0] + mergeTable[1] + mergeTable[2] + mergeTable[3]) ) { return { rowSpan: 0 }; } } } } // execute function for (let index = 0; index < 10; index++) { console.log(renderRowSpan(index)); }Creo que esto debería funcionar y producir un resultado dinámico según la cantidad de elementos en mergeTable.
function renderRowSpan(mergeTable){ const result = []; for (const item of mergeTable) { let i = item; while(i > 0) { result.push({ rowSpan: i === item ? item : 0 }); i--; } } return result; }function renderRowSpan(mergeTable){ return mergeTable.reduce(function(o, n){ o.push({rowspan:n}); for(let i=1; i<n; ++i) o.push({rowspan:0}); return o; }, []); }