Estoy leyendo el proceso que se está construyendo
https://developers.cardano.org/docs/integrate-cardano/listening-for-payments-cli/#process-utxo-table
y estoy atascado en los resultados de esta parte:
// Calculate total lovelace of the UTXO(s) inside the wallet address const utxoTableRows = rawUtxoTable.data.trim().split('\n'); let totalLovelaceRecv = 0; let isPaymentComplete = false; for (let x = 2; x < utxoTableRows.length; x++) { const cells = utxoTableRows[x].split(" ").filter(i => i); totalLovelaceRecv += parseInt(cells[2]); } Entiendo que hasta la .split(" ") , la tabla se ha dividido en al menos 2 elementos dentro de la matriz de utxoTableRows desde la primera fila los encabezados que no nos interesan y la segunda fila es el primer utxo siendo procesado. El .split(" ") luego divide la fila donde hay un espacio, pero no sé qué hace la parte del filtro. La tabla de consulta utxo tiene el siguiente aspecto:
| txhash | TxIx | Monto |
|---|---|---|
| dfb99f8f103e56a856e04e087255dbaf402f3801acb71a6baf423a1054d3ccd5 | 0 | 1749651926 |
Como puede ver, hay dos filas. Estoy completamente perdido en el componente de filtro. Me pierdo más en el siguiente comando parseInt(cells[2]) . Sé que de alguna manera toma la cantidad como una cadena y la convierte en un número entero. La referencia [2] me desconcierta porque ¿no tendría que ser [3] ya que la cantidad es el tercer elemento que se divide en esa fila? Lo único que se me ocurre es que .filter(i => i) arroja el TxHash , luego guarda el TxIx (en este caso 0) en cell[1] y la cantidad (en este caso 1749651926) en cell[2] , tanto como cadenas.
Gracias por la ayuda.
filter filtrará todos los elementos en la matriz donde la devolución de llamada devuelve false después de la coerción.
En este caso, el filter elimina todas las cadenas en blanco de la matriz. Si el elemento es una cadena vacía, la devolución de llamada devuelve false , ya que las cadenas vacías, cuando se convierten en booleanas, son false (ver: Valores falsos).