如何在另一个数组中查找id不可用的对象



我有2个对象数组。其中一个是原始数组,另一个数组包含修改后的数组。修改后的数组可以包含settingValueDtoList中的新对象、编辑对象或删除对象

目前,我正在settingValueDtoList中为一条新记录编写代码。如果我在任何settingValueDtoList中添加一些新对象,那么它的id将像a0,或者像这样的a1或a2。我只是在迭代这两个数组,并检查id是否不在original数组中,这意味着它是一个新对象,我想将该对象推送到我的addSettingArray变量中

如何获取原始数组中不存在id的新记录?

这就是我尝试过的。

compareSetting(settingArray: Array<any>) {
console.log('abc', this.settingObject)
console.log('settingArray',settingArray)
let settingIndex = 0;

this.settingObject.forEach(unmodifiedSetting => {   
let modifiedSetting = settingArray[settingIndex];
modifiedSetting.settingValueDtoList.forEach(editedSettingValue => {
unmodifiedSetting.settingValueDtoList.forEach(uneditedSettingValue => {
if(editedSettingValue.id != uneditedSettingValue.id) {
this.addSettingArray.push(editedSettingValue);
}
});
})
settingIndex++;
})
console.log('add', this.addSettingArray)
}

这样尝试:

compareSetting(settingArray: Array<any>) {
console.log('abc', this.settingObject)
console.log('settingArray',settingArray)
let settingIndex = 0;
this.settingObject.forEach(unmodifiedSetting => {   
let modifiedSetting = settingArray[settingIndex];
modifiedSetting.settingValueDtoList.forEach(editedSettingValue => {
let isNewEntry = true;
unmodifiedSetting.settingValueDtoList.forEach(uneditedSettingValue => {
if(editedSettingValue.id == uneditedSettingValue.id) {
isNewEntry = false;
}
});

if (isNewEntry){
this.addSettingArray.push(editedSettingValue);
}
})
settingIndex++;
})
console.log('add', this.addSettingArray)

}

编辑:更抽象以更好地理解:

array1.forEach(entry1 => 
{
let isNewEntry = true; // says if entry1 is not present in array2
array2.forEach(entry2 => 
{
if(entry1.id == entry2.id) 
{
isNewEntry = false; // the entry1 was found in array2
}
});

if (isNewEntry)
{
// the entry1 was not found in array2 - do whatever you want here
}
});

最新更新