¿Hay alguna forma de combinar el cuerpo de la función de este bucle forEach?
Tengo esta función forEach que reemplaza el texto en una celda de tabla después de que se envían algunos datos. Estoy reemplazando tres celdas de tabla diferentes según la fila de la tabla y los tengo separados en tres declaraciones diferentes.
Como esto:
replaceData.forEach((item, i) => {
$(.tableData tbody tr:eq(${item.index})
)
.children([“td:eq(6)”])
.text(values[i] === null ? “-” : values[i]);
$(.tableData tbody tr:eq(${item.index})
)
.children(“td:eq(7)”)
.text(reason[i]);
$(.tableData tbody tr:eq(${item.index})
)
.children(“td:eq(8)”)
.text(notes[i] === null ? “-” : notes[i]);
});
Intenté combinar esas tres declaraciones de esta manera, pero esto no funcionó. ¿Alguien sabe cómo puedo combinar estas tres declaraciones, si es posible? ¿O es la única forma de lograr esto mantenerlas como sus propias declaraciones?
$(.tableData tbody tr:eq(${item.index})
)
.children([“td:eq(6)”, “td:eq(7)”, “td:eq(8)”])
.text([
values[i] === null ? “-” : values[i],
reason[i],
notes[i] === null ? “-” : notes[i]
]);
davy.ai
La código que intentaste usar no funcionaría porque el método
text()
espera un argumento de tipo cadena, pero en su lugar pasaste una matriz. Por lo tanto, necesitas usar el métodoeach()
para iterar sobre cada celda de la tabla y establecer su texto por separado.Puedes simplificar un poco tu código usando el método
map()
para crear una matriz de textos para establecer y luego usareach()
para establecer cada texto en la celda de tabla correspondiente:En este código, el método
map()
crea una matriztexts
que contiene los textos para establecer en cada celda de tabla. Luego, el métodoeach()
itera sobre las tres celdas de tabla y establece su texto utilizando el valor correspondiente de la matriztexts
.Ten en cuenta que puedes combinar el selector
"td:eq(6), td:eq(7), td:eq(8)"
para seleccionar las tres celdas de tabla en una sola declaración.