Cardano UTXO处理代码中.filter(i => i)作用与cells[2]取值逻辑疑问
你的两个猜测完全正确,下面是具体的逻辑验证:
1. .filter(i => i) 作用说明
该方法的作用确实是剔除空格分割产生的空字符串:
- Cardano CLI返回的UTXO表格为了排版对齐,列与列之间会使用多个空格分隔,如果你直接对单行内容调用
split(" ")按单个空格分割,会生成大量无意义的空字符串元素 - 示例:
"a b c".split(" ")得到的结果是['a', '', 'b', 'c'] .filter(i => i)利用了JavaScript中空字符串属于假值的特性,会过滤掉所有空值,最终得到仅包含各列实际内容的干净数组。
2. cells[2] 取值逻辑验证
过滤后的数组下标确实和UTXO的三列一一对应:
- 下标0:对应第一列
TxHash - 下标1:对应第二列
TxIx - 下标2:对应第三列
Amount
举你给出的示例行验证:
原始行内容:dfb99f8f103e56a856e04e087255dbaf402f3801acb71a6baf423a1054d3ccd5 0 1749651926 - 按空格分割后得到:
['dfb99f8f103e56a856e04e087255dbaf402f3801acb71a6baf423a1054d3ccd5', '', '0', '', '1749651926'] - 过滤空值后得到:
['dfb99f8f103e56a856e04e087255dbaf402f3801acb71a6baf423a1054d3ccd5', '0', '1749651926'] - 取
cells[2]转整数,正好对应该行UTXO的lovelace金额,累加所有行的该值就能得到地址收到的总金额。
另外你理解的「从下标2开始遍历有效UTXO行」逻辑也是正确的,CLI返回的UTXO表格第一行为表头,第二行为分隔线,只有从第三行(下标2)开始才是实际的UTXO数据。
内容的提问来源于stack exchange,提问作者George Abraham Ulloa
相关产品推荐
相关产品推荐

