Wie übergebe ich ein Array als Funktionsparameter?

Ich stoße auf das gleiche Problem wie diese Frage: Übergeben eines Arrays als Parameter von javascrpt (web3) an eine Solidity-Funktion

Wenn ich meine Funktion im Browser-solidity mit dem Parameter [122,44] aufrufe, funktioniert es gut. Aber wenn ich es in meiner eigenen Web-Benutzeroberfläche verwende, wird "Error: new BigNumber() not a number" ausgegeben. Die Art, wie ich es nenne, ist wie:

myContract.myFunction([122,44],{from:accounts[0]},function(err,res){...})

oder

myContract.myFunction(["122","44"],{from:accounts[0]},function(err,res){...})

Ich weiß nicht warum. Es sollte das gleiche Ergebnis wie in der Browser-Festigkeit sein.

Antworten (1)

Welche Typen erwartet Ihre Soliditätsfunktion? Wenn es uint oder int ist, müssen Sie Ihre Parameter in BigNumber konvertieren, bevor Sie sie übergeben. Z.B:

import BigNumber from 'bignumber.js';
let myParams = [122,44];
let convertedParams = myParams.map( item => { return new BigNumber(item)});
myContract.myFunction(convertedParams,{from:accounts[0]},function(err,res){...})