Solidity

如何檢索儲存在前端映射中的數組長度?

  • July 27, 2018

我與以下映射簽訂了契約:

mapping (uint16 => uint256[]) public barLengthToBarIndexForSale;

使用松露在前端檢索給定鍵的數組長度的最佳方法是什麼?

像這樣的東西…

barERC721Inst.barLengthToBarIndexForSale(5).length;

…似乎不起作用。

在我的契約中使用附加功能來檢索長度……

   function getBarLengthToBarIndexForSaleLength(uint16 _length) external view returns (uint) {
   return barLengthToBarIndexForSale[_length].length;
}

…似乎也不起作用:(

我試著像這樣在前端呼叫它:

barERC721Inst.barLengthToBarAmtForSale.call(5)

barERC721Inst.barLengthToBarAmtForSale(5)

兩者都拋出錯誤。

任何幫助表示讚賞。

您可以在合約中編寫一個返回數組長度的 getter 函式。一定要做到view

function getSize(uint16 key) public view returns (uint){
   return barLengthToBarAmtForSale[5].length
}

如果不可能(契約已經部署),那麼您可以“嘗試”循環遍歷陣列(它不消耗氣體),直到出現錯誤。這有點臟,但應該可以。

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/55231