如何比较 Angular 中两个对象的值
How to compare values of two objects in Angular
我在单击表单中的添加新按钮时动态推送行。
新数据将以对象的形式添加到oldData数组中。
我想将 newData 对象的所有值与 oldData 数组匹配,
如果具有相同值的 newData 对象在对象的 oldData 数组中可用,则代码将控制错误,否则它会推送该行。
任何人都可以帮助我使我的功能正常工作。
我是这样做的:
private allElementExists(newData: any[], oldData: any[]): boolean {
for (const item of newData) {
var verifyItem = oldData.find(x => x.id === item.id);
if (verifyItem === undefined) {
return false;
}
}
return true;
}
这里有一个函数可以比较您在问题中提出的两个对象
这是 stackblitz 中使用此 function
的示例
https://stackblitz.com/edit/angular-xscnkf?file=src%2Fapp%2Fapp.component.html
如果oldData保留了多个对象,你可以这样做:
if(!oldData.includes(newData))
编辑 1(描述中的原始代码):如果两者都只是单个对象,则简单比较即可:
if(oldData! = newData)
编辑 2(描述中的编辑代码):
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
if(oldData.includes(newData)){
console.log('This element already exists in the detail list');
}
else this.addItem(this.createItem(null));
}
编辑 3:如果 oldData 至少有两次 newData
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
if((oldData.split(newData).length - 1) >= 2){
console.log('This element already exists in the detail list at least TWICE');
}
else this.addItem(this.createItem(null));
}
或:
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
let newReg= new RegExp(newData, "g");
if((oldData.match(newReg) || []).length >= 2){
console.log('This element already exists in the detail list at least TWICE');
}
else this.addItem(this.createItem(null));
}
我在单击表单中的添加新按钮时动态推送行。 新数据将以对象的形式添加到oldData数组中。
我想将 newData 对象的所有值与 oldData 数组匹配, 如果具有相同值的 newData 对象在对象的 oldData 数组中可用,则代码将控制错误,否则它会推送该行。
任何人都可以帮助我使我的功能正常工作。
我是这样做的:
private allElementExists(newData: any[], oldData: any[]): boolean {
for (const item of newData) {
var verifyItem = oldData.find(x => x.id === item.id);
if (verifyItem === undefined) {
return false;
}
}
return true;
}
这里有一个函数可以比较您在问题中提出的两个对象
这是 stackblitz 中使用此 function
https://stackblitz.com/edit/angular-xscnkf?file=src%2Fapp%2Fapp.component.html
如果oldData保留了多个对象,你可以这样做:
if(!oldData.includes(newData))
编辑 1(描述中的原始代码):如果两者都只是单个对象,则简单比较即可:
if(oldData! = newData)
编辑 2(描述中的编辑代码):
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
if(oldData.includes(newData)){
console.log('This element already exists in the detail list');
}
else this.addItem(this.createItem(null));
}
编辑 3:如果 oldData 至少有两次 newData
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
if((oldData.split(newData).length - 1) >= 2){
console.log('This element already exists in the detail list at least TWICE');
}
else this.addItem(this.createItem(null));
}
或:
addNewType(rowdata) {
const newData = JSON.stringify(rowdata.value);
const oldData = JSON.stringify(this.items.value);
let newReg= new RegExp(newData, "g");
if((oldData.match(newReg) || []).length >= 2){
console.log('This element already exists in the detail list at least TWICE');
}
else this.addItem(this.createItem(null));
}