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