离子阵列过滤器不过滤



我有一个数组中的项目列表。 数组中的每个元素都包含以下内容:

id
date
status
name
description

我正在尝试创建第二个数组,该数组将包含状态 = '挂起' 的第一个数组中的所有元素。

我正在我的home.ts文件中执行以下代码:

showPending(){
this.pendingItems = this.items;
this.pendingItems.filter((item) => {return item.status === 'pending'});
this.navCtrl.push(ShowPendingPage, {
pendingItems: this.pendingItems      
});
}

当我运行我的应用程序时,我在 items 数组中添加了 3 个元素。 2 个元素的状态为挂起,1 个元素的状态为完成。 当我执行上面的代码时,ShowPendingPage被推送了。 我在 ShowPendingPage.ts 文件中执行以下代码:

this.passedArray = this.navParams.get('pendingItems')

我在我的ShowPendingPage中执行以下内容.html:

<ion-content>
<ion-list>
<ion-item-sliding *ngFor="let item of passedArray">
<ion-item [ngClass]="item.status">
{{item.name}} - Added {{item.date}}
</ion-item>  
<ion-item-options side="right">
<button ion-button color="light" (click)="viewItem(item)">View</button>
</ion-item-options>
</ion-item-sliding>
</ion-list>
</ion-content>

生成的数组包含原始数组的所有 3 个元素。 它应该只包含 2 个元素,其中两个我将状态设置为挂起。

有比我有更好的眼睛能看到我错过什么吗?

Array.prototype.filter创建一个包含过滤元素的新数组,并且未就位

filter(( 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

filter(( 不会改变调用它的数组。

您只需将其设置为变量即可。

this.pendingItems = this.pendingItems.filter((item) => {return item.status === 'pending'});

最新更新