Javascript 过滤角度为6的数据
我在纽约6号。我目前正在从事angular 6项目。我遇到了这样一种情况:我需要对数据进行归档,但我无法保留原始对象。以下是代码:Javascript 过滤角度为6的数据,javascript,angular,Javascript,Angular,我在纽约6号。我目前正在从事angular 6项目。我遇到了这样一种情况:我需要对数据进行归档,但我无法保留原始对象。以下是代码: this.loginService.categoryType$.subscribe((data) => { for(var i=0; i<this.listPosts.length; i++){ if(this.listPosts[i]['categoryName'] == data){ }else{
this.loginService.categoryType$.subscribe((data) => {
for(var i=0; i<this.listPosts.length; i++){
if(this.listPosts[i]['categoryName'] == data){
}else{
this.listPosts.splice(i,1);
}
}
});
this.loginService.categoryType$.subscribe((数据)=>{
对于(var i=0;i如果您需要保留原始列表和过滤列表,我建议您将原始列表保存在变量中,然后使用rxjs方法显示过滤后的列表
originalList$: BehaviorSubject<any> = new BehaviorSubject<any>([]);
filteredList = [];
this.loginService.categoryType$.subscribe((data) => {
this.originalList$.next(data);
});
this.originalList$.pipe(
map(data => yourLogicToFilter(data))
).subscribe(list => filteredList = list);
originalList$:BehaviorSubject=新的BehaviorSubject([]);
filteredList=[];
this.loginService.categoryType$.subscribe((数据)=>{
this.originalList$.next(数据);
});
这个.originalList$.pipe(
映射(数据=>yourLogicToFilter(数据))
).subscribe(list=>filteredList=list);
filteredList可以是可观察的,因此您也可以在代码中使用异步管道
也许有更干净的解决方案包含rxjs,但至少这应该让你继续逻辑从我的理解来看,你想要获得数据,你不想改变存储在组件中的原始对象作为属性。在这种情况下,使用拼接会破坏你尝试做的事情的目的,因为它会发生变化这就是目标
有很多方法可以做到这一点,但我会尽量让我的答案尽可能接近你的代码。如果我错了,请纠正我,但在我的理解中,this.loginService.categoryType$
是一个可观察的或用于确定类别类型的主题。既然你已经将类别类型作为可观察的,你可以使用map然后根据类别名称筛选this.listPosts
const listPosts$ = this.loginService.categoryType$.pipe(
map(categoryType => this.listPosts.filter(
listPost => listPost.categoryName === categoryType
)),
);
您可以在模板上使用listPosts$
,并在其上使用管道异步。
listPosts$| async
或者您可以点击或订阅它,就像您获取值并将其分配给组件属性或变量那样。我个人不喜欢这种方法,因为您将流中的值存储在变量中
const listPosts$ = this.loginService.categoryType$.pipe(
map(categoryType => this.listPosts.filter(
listPost => listPost.categoryName === categoryType
)),
);
listPosts$.subscribe(currentList => this.currentListPosts = currentList);
希望这能有所帮助!为什么没有两个变量:data和dataFiltered?,dataFiltered=value?data.filter(x=>x.property==value):data
const listPosts$ = this.loginService.categoryType$.pipe(
map(categoryType => this.listPosts.filter(
listPost => listPost.categoryName === categoryType
)),
);
listPosts$.subscribe(currentList => this.currentListPosts = currentList);