2016-04-24 11 views
1

Bitgo stellt alle Transaktionen als Objekte bereit und wird immer in einem großen Array gespeichert. In den verschachtelten .entries sehen wir, dass das erste TX-Objekt zwei Minuswerte hat -312084680 und -4254539, von denen ich nur den niedrigsten Wert benötige. Mein Code funktioniert und protokolliert alle Transaktionen, aber es ist nur korrekt, wenn das Geld von nur einer Adresse gesendet wird. Wenn zwei Minuswerte vorhanden sind, log ich 3-Transaktionen statt nur 2.BitGO - MIN-Wert von Array von Objekten abrufen

var allTxs = [ 
    { 
     "id": "e5216ffaaa2a37bcc14380db07f06c85a65bcdc4e1fcab2bd5523f0b8a11bc15", 
     "normalizedHash": "0709c99097386a3c0130f3d6b002acf6a4e37978406704268fc9d308eec4c2b8", 
     "date": "2016-04-17T20:07:03.700Z", 
     "fee": 7440, 
     "inputs": [ 
     { 
      "previousHash": "6d043a06ade4eac5315967c463fcd65deb4ed9bff23ee3e73ff82c9cf72360e9", 
      "previousOutputIndex": 1 
     }, 
     { 
      "previousHash": "b6e566cbee0f23bee7b321eda7f6159a165101e77e7f1e75bd9eb6e31540b391", 
      "previousOutputIndex": 0 
     } 
     ], 
     "outputs": [ 
     { 
      "vout": 0, 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 312500000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
     }, 
     { 
      "vout": 1, 
      "account": "mmRuajWq2xPYQw4gjXz8pQ2fUfJTF7fvYe", 
      "value": 3831779 
     } 
     ], 
     "entries": [ 
     { 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 312500000 
     }, 
     { 
      "account": "muEePZzkRWX3RnLWHxTx6r8T3MMruTgMgg", 
      "value": -312084680 
     }, 
     { 
      "account": "mmRuajWq2xPYQw4gjXz8pQ2fUfJTF7fvYe", 
      "value": 3831779 
     }, 
     { 
      "account": "n47gD5D3XfBG41tWKX4YHNc9gboyWU9yJg", 
      "value": -4254539 
     } 
     ], 
     "confirmations": 677, 
     "pending": false, 
     "instant": false, 
     "blockhash": "000000000000020f526fe18af7536fa4e816694c4dec865e0d87d6b722b643d9", 
     "height": 786821 
    }, 
    { 
     "id": "71fb53e7d70ce27dced2eb327ac544b8f046e66480342ba81533046f3267e6f4", 
     "normalizedHash": "80116b194b58b494d85b2a831815a978ec6f0fe617cfd020880ff1ad76b2bacc", 
     "date": "2016-04-17T20:06:56.474Z", 
     "fee": 4480, 
     "inputs": [ 
     { 
      "previousHash": "1f4145b615f5d067160184a3e9660396f826614c3fcae9abdcb7192c615b843a", 
      "previousOutputIndex": 0 
     } 
     ], 
     "outputs": [ 
     { 
      "vout": 0, 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 625000000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
     }, 
     { 
      "vout": 1, 
      "account": "mpntSJWk116JF58VRDxeMMwr4gC7afVEKt", 
      "value": 390110612 
     } 
     ], 
     "entries": [ 
     { 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 625000000 
     }, 
     { 
      "account": "mqRsJr8szT5XTSLm3CU7i9ePa7kWnC2VWs", 
      "value": -1015115092 
     }, 
     { 
      "account": "mpntSJWk116JF58VRDxeMMwr4gC7afVEKt", 
      "value": 390110612 
     } 
     ], 
     "confirmations": 689, 
     "pending": false, 
     "instant": false, 
     "blockhash": "000000000000020f526fe18af7536fa4e816694c4dec865e0d87d6b722b643d9", 
     "height": 786821 
    } 
]; 


    for (var i=0; i<allTxs.length; i++) { 
    if(allTxs[i].confirmations >= 7) { 
     var tx = allTxs[i]; 
     var value = 0; 
     for (var entriesIndex = 0; entriesIndex < tx.entries.length; ++entriesIndex) { 
     if (tx.entries[entriesIndex].account === wallet.id()) { 
      value += tx.entries[entriesIndex].value; 
     } 
     } 
     for (var receivedFrom = 0; receivedFrom < tx.entries.length; ++receivedFrom){ 
      if (tx.entries[receivedFrom].value < 0){ 
       var verb = (value > 0) ? 'Received' : 'Sent'; 
        console.log(tx.entries[receivedFrom].account + ' : ' + verb + ' ' + (value/1e8).toFixed(8)); 

     } 
     } 
    } 
    } 

Dies ist, wo die Magie passiert:

if (tx.entries[receivedFrom].value < 0){ 
        // both values are less than 0 

der Hoffnung, dass jemand so leicht findet und verleiht eine helfende Hand!

Antwort

1

Ich habe ein paar Änderungen vorgenommen, um die Lesbarkeit Ihres Codes zu verbessern, den Namen der Variablen zu ändern und forEach anstelle der traditionellen for-Schleife zu verwenden. Außerdem wurde ein Objekt namens minEntry erstellt, das den Eintrag mit dem niedrigsten Wert speichert. Hoffe, das Sie

half
var allTransactions = [ 
    { 
     "id": "e5216ffaaa2a37bcc14380db07f06c85a65bcdc4e1fcab2bd5523f0b8a11bc15", 
     "normalizedHash": "0709c99097386a3c0130f3d6b002acf6a4e37978406704268fc9d308eec4c2b8", 
     "date": "2016-04-17T20:07:03.700Z", 
     "fee": 7440, 
     "inputs": [ 
     { 
      "previousHash": "6d043a06ade4eac5315967c463fcd65deb4ed9bff23ee3e73ff82c9cf72360e9", 
      "previousOutputIndex": 1 
     }, 
     { 
      "previousHash": "b6e566cbee0f23bee7b321eda7f6159a165101e77e7f1e75bd9eb6e31540b391", 
      "previousOutputIndex": 0 
     } 
     ], 
     "outputs": [ 
     { 
      "vout": 0, 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 312500000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
     }, 
     { 
      "vout": 1, 
      "account": "mmRuajWq2xPYQw4gjXz8pQ2fUfJTF7fvYe", 
      "value": 3831779 
     } 
     ], 
     "entries": [ 
     { 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 312500000 
     }, 
     { 
      "account": "muEePZzkRWX3RnLWHxTx6r8T3MMruTgMgg", 
      "value": -312084680 
     }, 
     { 
      "account": "mmRuajWq2xPYQw4gjXz8pQ2fUfJTF7fvYe", 
      "value": 3831779 
     }, 
     { 
      "account": "n47gD5D3XfBG41tWKX4YHNc9gboyWU9yJg", 
      "value": -4254539 
     } 
     ], 
     "confirmations": 677, 
     "pending": false, 
     "instant": false, 
     "blockhash": "000000000000020f526fe18af7536fa4e816694c4dec865e0d87d6b722b643d9", 
     "height": 786821 
    }, 
    { 
     "id": "71fb53e7d70ce27dced2eb327ac544b8f046e66480342ba81533046f3267e6f4", 
     "normalizedHash": "80116b194b58b494d85b2a831815a978ec6f0fe617cfd020880ff1ad76b2bacc", 
     "date": "2016-04-17T20:06:56.474Z", 
     "fee": 4480, 
     "inputs": [ 
     { 
      "previousHash": "1f4145b615f5d067160184a3e9660396f826614c3fcae9abdcb7192c615b843a", 
      "previousOutputIndex": 0 
     } 
     ], 
     "outputs": [ 
     { 
      "vout": 0, 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 625000000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
     }, 
     { 
      "vout": 1, 
      "account": "mpntSJWk116JF58VRDxeMMwr4gC7afVEKt", 
      "value": 390110612 
     } 
     ], 
     "entries": [ 
     { 
      "account": "2N5Jr87jhTuAHab37VKWNPhoH1WUEHkVg1Q", 
      "value": 625000000 
     }, 
     { 
      "account": "mqRsJr8szT5XTSLm3CU7i9ePa7kWnC2VWs", 
      "value": -1015115092 
     }, 
     { 
      "account": "mpntSJWk116JF58VRDxeMMwr4gC7afVEKt", 
      "value": 390110612 
     } 
     ], 
     "confirmations": 689, 
     "pending": false, 
     "instant": false, 
     "blockhash": "000000000000020f526fe18af7536fa4e816694c4dec865e0d87d6b722b643d9", 
     "height": 786821 
    } 
]; 

    allTransactions.forEach(function (transaction){  
     var value = 0; 
     var minEntry = { value : 0 }; 
     transaction.entries.forEach(function (entry) { 
     //if (entry.account === wallet.id()) { 
      value += entry.value; 
     //} 
     }); 
     var verb = (value > 0) ? 'Received' : 'Sent'; 
     transaction.entries.forEach(function (entry) { 
      if (entry.value < minEntry.value){ 
      minEntry = entry; 
     } 
     }); 
     if(minEntry.value){ 
     console.log(minEntry.account + ' : ' + verb + ' ' + (value/1e8).toFixed(8)); 
     } 
    }); 
+0

Oh sorry, versuchen transaction.entries.forEach –

+0

minValue zu minEntry verändert, wurde immer minValue nicht definiert ist. Keine Fehler danach aber console.log (minEntry.account + ':' + verb + '' + (Wert/1e8) .toFixed (8)); wird nicht angerufen. –

+0

Ich habe den Code bearbeitet und versuche es erneut. In dem von Ihnen bereitgestellten Code ist die Objektmappe nicht vorhanden. –