Solidity
如何檢索儲存在前端映射中的數組長度?
我與以下映射簽訂了契約:
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 }
如果不可能(契約已經部署),那麼您可以“嘗試”循環遍歷陣列(它不消耗氣體),直到出現錯誤。這有點臟,但應該可以。
希望能幫助到你。