2016-06-22 23 views
0

例を結果:トランザクションのIDですTXarray2.idあれば、それはたとえばcf948340a40d3302303dfb3710cfce37bb1cd156dcb6c74561fdc71c0a8fc30bためDBarray1.User_Profile.TXHash内部のユーザによって行われた支払いと一致した場合は、2つのオブジェクトの配列を比較し、フィルタは

const depositAddress = '2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG'; 

DBarray1.forEach((tx) => { 
    console.log(tx); 
}) 

TXarray2.forEach((sim) => { 
    console.log(sim); 
}); 

DBarray1 = [ 
    { 
     "_id": "575e2b7875a402111900ba8f", 
     "username": "[email protected]", 
     "playerWallet": "2NFt8YfydBU5JD9U8Xq2ucbfUp2sP7BjUrh", 
     "User_Profile": { 
      "TXHash": [ 
      "7fbe28f75412f19dfd123a08ce03c33c302aa13d1e68d38ab8cb4c7418777f8e" 
      ] 
     } 
    }, 
    { 
     "_id": "575e2946b909906a17ea65b9", 
     "username": "[email protected]", 
     "playerWallet": "2MzppxEX7xMidjhoJGczFDYsHk5TQwFkjS3", 
     "User_Profile": { 
      "TXHash": [ 
      "cf948340a40d3302303dfb3710cfce37bb1cd156dcb6c74561fdc71c0a8fc30b", 
      "6219def49d2e8284a6031f4c7e05e21adf756d38904e6359bd7844ae14c75a50" 
      ] 
     } 
    } 
] // end console.log(DBarray1); 


TXarray2 = [ 
    { 
     "id": "cf948340a40d3302303dfb3710cfce37bb1cd156dcb6c74561fdc71c0a8fc30b", 
     "normalizedHash": "f62af1a61c7eb569c1a171ad23c70bc218bd7244c9c5c92cf7d98638314fbbc5", 
     "date": "2016-06-21T04:11:18.541Z", 
     "fee": 6280, 
     "inputs": [ 
      { 
      "previousHash": "2660fb761354671912b0cea6427e9ee91a98a507e5f1408865a6058b566b508c", 
      "previousOutputIndex": 0 
      }, 
      { 
      "previousHash": "ce3ef138c11ea4d1766cce52ccf5f1e91790bc03b56561b0eb669041bae4e1a3", 
      "previousOutputIndex": 0 
      } 
     ], 
     "outputs": [ 
      { 
      "vout": 0, 
      "account": "2N92kApgroS6CTVuTajtjWtpcAZpUiyQoDT", 
      "value": 861003 
      }, 
      { 
      "vout": 1, 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 3100000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
      } 
     ], 
     "entries": [ 
      { 
      "account": "2MzppxEX7xMidjhoJGczFDYsHk5TQwFkjS3", 
      "value": -3967283 
      }, 
      { 
      "account": "2N92kApgroS6CTVuTajtjWtpcAZpUiyQoDT", 
      "value": 861003 
      }, 
      { 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 3100000 
      } 
     ], 
     "confirmations": 70, 
     "pending": false, 
     "instant": true, 
     "instantId": "5768be65427689eb06e597559c7e6cf0", 
     "blockhash": "00000000002d9fb51c7c3c1607fe062eff686aa6be657a59fee6c3044963897d", 
     "height": 872152 
    }, 
    { 
     "id": "6219def49d2e8284a6031f4c7e05e21adf756d38904e6359bd7844ae14c75a50", 
     "normalizedHash": "179a4466fdfc5470e99e43aa177d43aa4f09e3a06760fd5bebffdda080d4407f", 
     "date": "2016-06-21T04:13:23.650Z", 
     "fee": 9096, 
     "inputs": [ 
      { 
      "previousHash": "5d2879a79ea3d0dcb50049ef9ca46ef7e8d82caf2073a299a6cd0332add404c8", 
      "previousOutputIndex": 1 
      }, 
      { 
      "previousHash": "d75288e69a3fc2edd534ddcd845af6a280a27af58013ae82828c8a8f813829c1", 
      "previousOutputIndex": 0 
      }, 
      { 
      "previousHash": "eea4f9b274708b60c1b030203543a155857bc54aa11055ada04aceee706f96b9", 
      "previousOutputIndex": 0 
      } 
     ], 
     "outputs": [ 
      { 
      "vout": 0, 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 2000000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
      }, 
      { 
      "vout": 1, 
      "account": "2MzFTm5jnCDiAapjNnyVgZAJrXMKfQ74esV", 
      "value": 9859 
      } 
     ], 
     "entries": [ 
      { 
      "account": "2MzcwVFKF274bMNT5tNEDY7Ua7bAgvFUdu9", 
      "value": -35316 
      }, 
      { 
      "account": "2MzFTm5jnCDiAapjNnyVgZAJrXMKfQ74esV", 
      "value": 9859 
      }, 
      { 
      "account": "2MzppxEX7xMidjhoJGczFDYsHk5TQwFkjS3", 
      "value": -1983639 
      }, 
      { 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 2000000 
      } 
     ], 
     "confirmations": 70, 
     "pending": false, 
     "instant": true, 
     "instantId": "5768bee2b5bdf3f406e7db035aef016a", 
     "blockhash": "00000000002d9fb51c7c3c1607fe062eff686aa6be657a59fee6c3044963897d", 
     "height": 872152 
    }, 
    { 
     "id": "7fbe28f75412f19dfd123a08ce03c33c302aa13d1e68d38ab8cb4c7418777f8e", 
     "normalizedHash": "b4f1974dccde5ea9dfb0abcd7d4a6f3f14995d9dd422aa7d2a9078229ff18ff4", 
     "date": "2016-06-21T03:39:25.034Z", 
     "fee": 3465, 
     "inputs": [ 
      { 
      "previousHash": "97fbb6ed8646f7ce9ed10a4230a70348151d5b6b208ad068e3a1a3fddae2dc0e", 
      "previousOutputIndex": 2 
      } 
     ], 
     "outputs": [ 
      { 
      "vout": 0, 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 111200000, 
      "isMine": true, 
      "chain": 0, 
      "chainIndex": 0 
      }, 
      { 
      "vout": 1, 
      "account": "2NFJnLrhsCDfG3ooQvGC169gnzBabtRgV2y", 
      "value": 244246993 
      } 
     ], 
     "entries": [ 
      { 
      "account": "2NCGUnwpNgaJbhMZKLJcBrWvZhWnai5PjVC", 
      "value": -355450458 
      }, 
      { 
      "account": "2NFJnLrhsCDfG3ooQvGC169gnzBabtRgV2y", 
      "value": 244246993 
      }, 
      { 
      "account": "2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG", 
      "value": 111200000 
      } 
     ], 
     "confirmations": 77, 
     "pending": false, 
     "instant": false, 
     "blockhash": "0000000000509dbc80cc3d86cdb10ce8e87ab7867c6775a9b00ca904fbe70da7", 
     "height": 872145 
    } 
]// end console.log(TXarray2); 

はどのようにして、確認することができます。

お知りになりたい方はTXarray2.idをお支払いいただきました。私は約束でこれをやろうとしましたが、家に帰るときにいくつかのコードを共有しますが、これはすべてのユーザーのために非同期で行うことができ、今日このウォレットに支払いを行った人物を記録できます。私はarray.find()メソッドを使ってTXHashをチェックしようとしましたが失敗しましたが、まだ多くのプロトタイプメソッドを完全には把握していません...

誰かが既にこのことを彼のために公園で歩いて、この種のものを検証する。私はロダシ、地図作成、何でも何でも答えを受け入れます。 TY !!!

答えて

2

TXArray2を反復して、transactionIdのDBarray1を検索します。 私はmapfilterのようなネイティブ配列方法で仕事をしたいので、私は次のようなものを使用します。

const result = TXarray2.map(tx => ({ 
    transaction: tx, 
    user: DBarray1.filter(user => user.User_Profile.TXHash.indexOf(tx.id) > -1)[0] 
})); 

この例resultでは、すべての要素がトランザクションと一致するユーザーを含む配列です。

+0

ありがとう@ 0xRm私の意見で結果を照会するための最善の方法を提供して、正直なところ私は方法がより速く、より良いという手掛かりがありませんが、短くて理にかなっています。私はindexOfを使って 'depositAddress'に送られた値を得ることができました。 –

+0

よろしくお願いいたします。あなたを助けてくれてうれしいです。 – 0xRm

1

すでにトランザクションデータとユーザーデータがすべてある場合は、このようなことができますか?

// for each transaction in TXarray2 
for (let { 'id': transactionId } of TXarray2) { 

    // check each entry in DBarray1 
    for (let { '_id': userId, 'User_Profile': { 'TXHash': transactions } } of DBarray1) { 

     if (transactions.includes(transactionId)) { 
      console.log(`${transactionId} was made by ${userId}`); 
     } 
    } 
} 
+0

私は$ {userId}の 'undefined'を作ってみました。コードの考え方を簡素化する本当に便利な方法である 'of'と' .includes'の手がかりはありませんでした。タイはとても分かち合い、世話をしています! –

+0

ええ、このコードではエラーチェックは行われません(たとえば、トランザクションに一致するユーザーがいない場合など)が、楽しいES6演習でした! – robyn

1

ここでの最善の方法は、(あなたがコールバックを使用する場合やArray.findIndex)返す-1エントリが配列でない場合はArray.indexOfを使用することです。

ここには同期バリアントがあります。

var paid = [];

TXArray2.forEach(function(transaction){ 

    for(var i = 0; i < DBArray1.length; ++i){ 
    if(DBArray1[i].User_Profile.TXHash.indexOf(transaction.id) > -1){ 
     paid.push({ 
     user : DBArray1[i], 
     transaction : transaction 
     }); 
     break; 
    } 
    } 
}); 
console.log(paid); 
+0

@Roman Stetsyshinをご利用いただき、ありがとうございます。この方法は素晴らしく、本当にうまく仕事を得ることができます。本当にStackOverflowコミュニティ、倫理、そして力に感謝し始めます。ありがとう !!! –

関連する問題