映射不存储它们的键,只存储存储在状态内存地址的值。要获取数据列表,请使用数组。
address[] public addresses;
现在定义一个函数来获取这个数组的长度:
function getAddressCount() public view returns(uint){
return addresses.length;
}
还定义一个函数来通过索引获取元素:
function getAddressByIndex(uint index) public view returns(address){
return addresses[index]
}
现在你需要编写代码来逐个拉取数组。这是在带有web3
库的javascript中完成的:
let addresses,addressCount;
try {
addressesCount = await ContractName.methods.getCampaignCounts().call();
addresses = await Promise.all(
Array(parseInt(addressesCount))
.fill()
.map((element, index) => {
return ContractName.methods.getAddressByIndex(index).call();
})
);
} catch (e) {
console.log("error in pulling array list", e);
}