Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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 - Fatal编程技术网

Javascript 如何比较两个对象数组中的值

Javascript 如何比较两个对象数组中的值,javascript,Javascript,我有两个对象数组 arrNew = [ { RecordId: '181049', DateCreated: 1563447093133 }, { RecordId: '187020', DateCreated: 1563447093134 } ] arrNew2 = [ { RecordId: '181049', DateCreated: 1563447093134 }, { RecordId: '187020', Dat

我有两个对象数组

  arrNew =  [ { RecordId: '181049', DateCreated: 1563447093133 },
              { RecordId: '187020', DateCreated: 1563447093134 } ]

   arrNew2 = [ { RecordId: '181049', DateCreated: 1563447093134 },
               { RecordId: '187020', DateCreated: 1563447093134 },
               { RecordId: '187021', DateCreated: 1563447093134 } ]
我需要做的是从第一个数组中获取
RecordID
,从第二个数组中获取
RecordID
,如果数组之间的RecordID匹配不起任何作用,那么新记录返回true

for (let index = 0; index < newArr.length; index++) {
    const element = newArr[index];

    for (let index = 0; index < newArr2.length; index++) {
      const element2 = newArr2[index];
      if(element.RecordId == element2.RecordId){
        console.log('true', '1')
      }else{
        console.log('false', '2')
      }
    }
 }
这不好


如何更正它?

您的代码对不同的循环使用相同的
索引
变量。但到目前为止,您天真的实现看起来还不错。对于嵌套循环,只需使用另一个变量
index2
快速修复即可:

newArr=[{RecordId:'181049',DateCreated:15634447093133},
{记录ID:'187020',创建日期:1563447093134}]
newArr2=[{RecordId:'181049',DateCreated:1563447093134},
{记录ID:'187020',创建日期:1563447093134}]
for(让index=0;index
您可以获取一个已知的
记录ID
并通过检查集合来过滤数组

过滤的结果可供进一步处理

优点是只有两个循环,一个用于生成集合,另一个用于获取未知元素,而不是反复迭代一个数组以获取匹配项

var array1=[{RecordId:'181049',DateCreated:15634447093133},{RecordId:'187020',DateCreated:15634447093134}],
array2=[{RecordId:'181049',DateCreated:1563447093134},{RecordId:'187020',DateCreated:1563447093134},{RecordId:'187021',DateCreated:1563447093134}],
已知=新集合(array1.map(({RecordId})=>RecordId)),
unknown=array2.filter({RecordId})=>!known.has(RecordId));

console.log(未知)让我们假设数组不相等(因为您没有说它们总是相等的),因此我们可以使用较短数组的长度(尝试将a[3]与b[3]进行比较,如果b中只有3个对象,则会出现错误)

var max=0//现在我们可以得到最大索引
if(arrNew.length>arrNew2.length){
最大值=2.5米长;
}否则{
最大=新长度;
}

对于(var i=0;i什么是值?请添加想要的结果。您的控制台工作正常,有任何原因导致它不正常吗?此外,您的变量必须重命名。如果RecordId等于第二个数组中的RecordId,我想比较它。out put i want it true,true it this case不清楚您想要实现哪种比较,两个ar光线总是有相同的长度?你想只比较第一个属性吗?我想它是在比较每个属性和每个属性,我需要在第二个属性中搜索RecordId,如果不是consle false的话
true 1
false 2
false 2
true 1
var max = 0; //so we now the max index we can go to

if(arrNew.length > arrNew2.length){
  max = arrNew2.length;
}else{
  max = arrNew.length;
}

for(var i=0;i<max;i++){
  if(arrNew[i].RecordId == arrNew2[i].RecordId)
  {
    console.log(true);
  }else{
    console.log(false);
  }
}