wie man ein Array mit mehreren Datentypen erstellt

Da struct nicht von solidity an web3js ausgegeben werden kann, verwende ich Arrays, ich könnte ein einzelnes Datentyp-Array im folgenden Code (userAddress) erhalten, aber ich kann nicht mehrere Werte im Array (userName, userTarget) verwenden. Irgendwelche Vorschläge Anleitung wäre toll

Solidität:

struct Person
    {
        address userAddress;
        string userName;
        uint userTarget;
    }
     mapping (uint => person) Persons;
     uint[] public personAccounts;
     uint incr = 0;

     function setDetailse(string  data, uint target) public
    {
        uint icr = incr++;
        address _address = msg.sender;
        var person = persons[icr];

        person .userAddress = _address;
        person .userName= _vote;
        person .userTarget = target;
        person Accounts.push(icr) -1;
    }

   function getPerson() view public returns(uint[])
   {
       uint256[] memory data =  new uint256[](11);
       for(uint i = 1; i<=10 ;i++)
        {
           data[i]=personAccounts[i];
        }
       return data;
   }

web3js:

GetDetails: function(Data, account) {
  event.preventDefault();
  var dataInstance;

  web3.eth.getAccounts(function(error, accounts) {
    if (error) {
      console.log(error);
    }

    var account = accounts[0];

    App.contracts.Details.deployed().then(function(instance) {
      dataInstance= instance;
      return dataInstance.getPerson();
    }).thenfunction((numbers => {
      const [ nums ] = numbers;
      for (var i = 0; i <nums.length; i++) 
    {
          console.log("address: "+nums[i]);
      }
  })).catch(function(err) {
      console.log("error executed");
    });
  });
Sie können andere Variablen für userAddress, userName, userTarget machen, wie Sie es für data as getan haben - uint256[] memory data = new uint256[](11); und geben Sie alle drei Werte von Variablen im Array einmal zurück.

Antworten (1)

Man kann kein Array mit mehreren Datentypen erstellen. Ein Array muss Elemente desselben Datentyps enthalten. Da eine Struktur nicht von einer Solidity-Funktion zurückgegeben werden kann, können Sie kein Array von Strukturen verwenden. In dieser Frage erfahren Sie , wie Sie mehrere Datentypen von einer Solidity-Funktion zurückgeben.