提问人:tripti tiwari 提问时间:2/24/2023 最后编辑:Sebastian Kaczmarektripti tiwari 更新时间:2/24/2023 访问量:454
如何根据条件在对象数组中推送值并避免在 Angular 14 中推送重复项
How to Push value in array of object based on condition and avoid pushing duplicates in Angular 14
问:
下面是我的代码,这里我想将对象推入数组中,if is 并且如果它不在数组中。但是在我的代码中,它在插入两个值后多次插入值。该对象如下所示,是我的方法,如果我单击它,我将获得 piece 对象。subModule
selectedPieces
submodule.active
true
selectedPieces
Pieces
activateClass
Pieces = {
pieceId: 1,
img: '../../../../assets/img/piece.PNG',
letter: 'O',
active: false
}
activateClass(subModule){
subModule.active = !subModule.active;
subModule.activeli = !subModule.activeli;
if(this.selectedPieces.length == 0 && subModule.active == true){
this.selectedPieces.push(subModule);
}
else{
for(let i=0;i< this.selectedPieces.length; i++){
if(subModule.active == true && subModule.pieceId !== this.selectedPieces[i].pieceId){
this.selectedPieces.push(subModule);
}
if(subModule.active == false && subModule.pieceId == this.selectedPieces[i].pieceId){
this.selectedPieces.splice(i);
}
}
}
console.log(this.selectedPieces);
}
答:
0赞
CodeThing
2/24/2023
#1
试试这个
activateClass(subModule){
subModule.active = !subModule.active;
subModule.activeli = !subModule.activeli;
if (this.selectedPieces.length === 0 && subModule.active === true){
this.selectedPieces.push(subModule);
} else {
let index = this.selectedPieces.findIndex((piece) => piece.pieceId === subModule.pieceId);
if (subModule.active === true && index === -1) {
this.selectedPieces.push(subModule);
}
if (subModule.active === false && index >= 0) {
this.selectedPieces.splice(index, 1);
}
}
console.log(this.selectedPieces);
}
评论
0赞
tripti tiwari
2/24/2023
当数组中只剩下 2 个值时,它不会从 selectedPieces 中删除这些值。数组中始终保留一个值
0赞
CodeThing
2/24/2023
@triptitiwari 你能试试这个更新的答案吗?
评论