Я сталкиваюсь с той же проблемой, что и этот вопрос: передача массива в качестве параметра из javascrpt (web3) в функцию Solidity
Если я вызываю свою функцию в браузере-solidity с параметром [122,44], она работает хорошо. Но если я использую его в своем собственном веб-интерфейсе, он выдает «Ошибка: новый BigNumber() не число». Я называю это примерно так:
myContract.myFunction([122,44],{from:accounts[0]},function(err,res){...})
или
myContract.myFunction(["122","44"],{from:accounts[0]},function(err,res){...})
Я не знаю почему. Должен получиться тот же результат, что и в браузере-солидии.
Какие типы ожидает ваша функция солидности? Если это uint или int, вы должны преобразовать свои параметры в BigNumber, прежде чем передавать его. Например:
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){...})