Как передать динамическое количество аргументов в функцию - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь передать разное количество аргументов в разных случаях. У меня есть следующий код:

function getByteCode(tokenData, incomeData){

        incomeData.volume = Number(incomeData.volume) * Math.pow(10,tokenData.decimals);
        incomeData.volume = incomeData.volume.noExponents();
        let web3 = new Web3();
        let instanceContract = new web3.eth.Contract(abi);
        instanceContract.options.address = tokenData.address;
        let necessaryMethod = instanceContract.methods[incomeData.methodCall];
        let methodCall = necessaryMethod(incomeData.destination_address, incomeData.volume);
        return methodCall.encodeABI();
    } catch (err) {
        sails.log(err);
        return {
            state: 'fail',
            message: 'There is error in creation byte code \n' + err
        }
    } 
}

В requiredMethod Я хочу передать два аргумента в одном случае и передать три или более аргумента в другом случае. Как мне это сделать? Может быть, я должен использовать " arguments ", но я не понимаю, как?

1 Ответ

0 голосов
/ 29 октября 2018

Хорошо, спасибо тебе за помощь.Я использовал метод .apply ()

let web3 = new Web3();
let instanceContract = new web3.eth.Contract(abi);
instanceContract.options.address = tokenData.address;
let necessaryMethod = instanceContract.methods[incomeData.methodCall];

let methodCall = necessaryMethod.apply(this, incomeData.argumentsForFunction); 

return methodCall.encodeABI();

В первом случае я вызвал функцию getByteCode (firstObj ,comeData) , а следующий в массивеcomeData.argumentsForFunction = ['0x323 ..... ',' 1500000000 '].

В другом случае я вызвал функцию getByteCode (firstObj ,comeData) withcomeData.argumentsForFunction = [' 0x323 ..... ','0x3228 .... ',' 54454000000 ']

...