Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较两个对象数组并筛选结果_Javascript_Node.js_Validation_If Statement_Foreach - Fatal编程技术网

Javascript 比较两个对象数组并筛选结果

Javascript 比较两个对象数组并筛选结果,javascript,node.js,validation,if-statement,foreach,Javascript,Node.js,Validation,If Statement,Foreach,例如: const depositAddress = '2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG'; DBarray1.forEach( (tx) => { console.log(tx); }) TXarray2.forEach( (sim) => { console.log(sim); }); DBarray1 = [ { "_id": "575e2b7875a402111900ba8f", "use

例如:

const depositAddress = '2NBXPR5PRtW8xBRuDnWXBDXqHYpDPupWnhG';

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

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

DBarray1 = [
    {
       "_id": "575e2b7875a402111900ba8f",
       "username": "aleluia@gmail.com",
       "playerWallet": "2NFt8YfydBU5JD9U8Xq2ucbfUp2sP7BjUrh",
       "User_Profile": {
          "TXHash": [
           "7fbe28f75412f19dfd123a08ce03c33c302aa13d1e68d38ab8cb4c7418777f8e"
          ]
       }
    },
    {
       "_id": "575e2946b909906a17ea65b9",
       "username": "super@user.com",
       "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);
我们如何检查交易id是否与用户在
DBarray1.user_Profile.TXHash
中的付款相匹配,例如
cf948340a40d330303dfb370cfce37bb1cd156dcb6c74561fdc71c0a8fc30b

我想知道forEach
TXarray2.id
是谁付款的。我试着用承诺来做到这一点,回家后我会分享一些代码,但我相信所有用户都可以通过async一个接一个地完成,并将今天付款的用户记录到这个钱包中。我尝试使用array.find()方法检查TXHash内部,但失败了,我还没有完全掌握许多原型方法


希望有人已经认为这对他来说是在公园里散步,并找到了一个更好的解决方案来验证这种东西。我会接受任何答案,即使是洛达斯,马平,任何东西。泰

如果您已经拥有所有事务和用户数据,您可以这样做吗

// 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}`);
        }
    }
}

如果您已经拥有所有的事务和用户数据,您可以这样做吗

// 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}`);
        }
    }
}

这里最好的方法是使用Array.indexOf(如果要使用回调,则使用Array.findIndex),如果条目不在数组中,它将返回-1

以下是同步变量:

支付的风险价值=[]

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);
TXArray2.forEach(函数(事务){
对于(变量i=0;i-1){
付费推送({
用户:DBArray1[i],
交易:交易
});
打破
}
}
});
控制台日志(付费);

这里最好的方法是使用Array.indexOf(如果要使用回调函数,则使用Array.findIndex),如果条目不在数组中,则返回-1

以下是同步变量:

支付的风险价值=[]

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);
TXArray2.forEach(函数(事务){
对于(变量i=0;i-1){
付费推送({
用户:DBArray1[i],
交易:交易
});
打破
}
}
});
控制台日志(付费);

您迭代TXArray2并在DBarray1中查找transactionId。 我喜欢使用本机数组方法,如
map
filter
,因此我会使用以下方法:

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

在本例中,
result
是一个数组,其中每个元素都包含一个事务和匹配的用户。

您迭代TXArray2,并在DBarray1中查找事务ID。 我喜欢使用本机数组方法,如
map
filter
,因此我会使用以下方法:

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

在本例中,
result
是一个数组,其中每个元素都包含一个事务和匹配的用户。

感谢您共享@Roman Stetsyshin。这种方法很好,而且确实很好地完成了任务。真正开始欣赏社区、道德和权力。太多了!!!感谢您分享@Roman Stetsyshin。这种方法很好,而且确实很好地完成了任务。真正开始欣赏社区、道德和权力。太多了!!!我试图让它为${userId}工作,但未定义。对和.includes没有任何线索,这些方法非常有用,可以简化我思考代码的方式。太感谢@robyn的分享和关怀了!是的,这段代码不做任何错误检查(例如,如果事务没有匹配的用户),但这是一个有趣的ES6练习!我试图让它为${userId}工作,但未定义。对和.includes没有任何线索,这些方法非常有用,可以简化我思考代码的方式。太感谢@robyn的分享和关怀了!是的,这段代码不做任何错误检查(例如,如果事务没有匹配的用户),但这是一个有趣的ES6练习!感谢@0xRm在我看来提供了查询结果的最佳方法,老实说,我不知道哪种方法更快更好,但我选择了这种方法,因为它很短而且很有意义。最后,我使用indexOf来获取发送到
depositAddress
的值,一切都很好。感谢@0xRm提供了查询结果的最佳方法。在我看来,老实说,我不知道哪种方法更快更好,但我选择了这种方法,因为它很短,而且很有意义。最后,我使用indexOf来获取发送到
depositAddress
的值,一切都很好。