如何解决控制台从solidity函数记录双数组吗?
我正在进行chai测试,想从智能合约功能中获取一个双精度数组,并对其进行控制台记录。 我的功能:
function getBuyOrderBook(string symbolName) constant returns (uint[],uint[]) {
uint8 tokenNameIndex = getSymbolIndexOrThrow(symbolName);
uint[] memory arrPricesBuy = new uint[](tokens[tokenNameIndex].amountBuyPrices);//length of the prices
uint[] memory arrVolumesBuy = new uint[](tokens[tokenNameIndex].amountBuyPrices);
uint whilePrice = tokens[tokenNameIndex].lowestBuyPrice;
uint counter = 0;
if(tokens[tokenNameIndex].curBuyPrice > 0){
while(whilePrice <= tokens[tokenNameIndex].curBuyPrice ){
arrPricesBuy[counter] = whilePrice;
uint volumeAtPrice = 0;
uint offers_key = 0;
offers_key = tokens[tokenNameIndex].buyBook[whilePrice].offers_key;
while(tokens[tokenNameIndex].buyBook[whilePrice].offers_length >= offers_key){
volumeAtPrice += tokens[tokenNameIndex].buyBook[whilePrice].offers[offers_key].amount;//increase the amount(i.e. 10 tokens) to this price (i.e. 10$)
offers_key ++; //
}
arrVolumesBuy[counter] = volumeAtPrice;
if(whilePrice == tokens[tokenNameIndex].buyBook[whilePrice].higherPrice){
break;
}
else{
whilePrice == tokens[tokenNameIndex].buyBook[whilePrice].higherPrice ;
}
counter ++;
}
}
return (arrPricesBuy,arrVolumesBuy ) ;
}
但不知道如何控制台记录诺言,因此我可以返回两个数组:
let arr1 = [];
let arr2 = [];
arr1,arr2 = await exchangeInstance.getArr(tokenSymbol);
console.log(arr1,arr2);
这显然行不通,有什么建议吗?
谢谢
解决方法
对不起,伙计,我无法识别这是什么JavaScript语言子集,但是在纯JS中将是这样的:
function getBuyOrderBook(symbolName) {
const arr1 = []; // our generated array 1
const arr2 = []; // our generated array 2
arr1.push.apply(arr1,[1,2,3]); // some operations with array 1
arr2.push.apply(arr2,[4,5,6]); // some operations with array 2
return [arr1,arr2]; // return combined result
}
let [a1,a2] = /*await*/ getBuyOrderBook(); // unpack result into 2 variables
console.log('a1 =',a1); // show var 1
console.log('a2 =',a2); // show var 2
这对您有意义吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。