【问题标题】:What does the .filter(i => i) do in this case?.filter(i => i) 在这种情况下做什么?
【发布时间】:2021-12-07 18:06:50
【问题描述】:

我正在阅读正在构建的过程

https://developers.cardano.org/docs/integrate-cardano/listening-for-payments-cli/#process-utxo-table

我对这部分的结果感到困惑:

// 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]);
}

据我所知,直到 .split(" ") 部分,该表已被拆分为 utxoTableRows 数组中的至少 2 个项目,因为第一行是我们不感兴趣的标题,第二行是第一个 utxo 正在处理中。 .split(" ") 然后拆分有空格的行,但我不知道过滤器部分的作用。查询utxo 表如下所示:

TxHash TxIx Amount
dfb99f8f103e56a856e04e087255dbaf402f3801acb71a6baf423a1054d3ccd5 0 1749651926

如您所见,有两行。我完全迷失在过滤器组件上。我在以下命令parseInt(cells[2]) 中迷失了更多。我知道它以某种方式将金额作为字符串并转换为整数。 [2] 引用让我失望,因为它不是必须是 [3],因为数量是在该行中拆分的第三个项目?我唯一能想到的是.filter(i =&gt; i)抛出TxHash,然后将TxIx(在本例中为0)保存在cell[1]中,并将金额(在本例中为1749651926)保存在cell[2]中,都作为字符串。

感谢您的帮助。

【问题讨论】:

标签: javascript arrays parsing filter cardano


【解决方案1】:

filter 将过滤掉数组中强制执行后回调返回false 的所有项目。

在这种情况下,filter 会删除数组中的所有空白字符串。如果项目是空字符串,则回调返回 false,因为当强制为布尔值时,空字符串是 false(参见:Falsy values)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多