我在书中有一系列页面。我想找到我用过滤器查找的页面的索引。我正在把它培养成一个有效的功能,但我想我不能将indexOf或findIndex或类似的东西与过滤器结合起来?
要获取特定页面,我使用以下代码:
getPage(pageNumber: number) {
return this.pages.filter(page => page.pageNumber == pageNumber)[0];
}
然后,要删除页面,我使用以下内容:
deletePage() {
let deletedPageLocation = this.findPageIndex();
this.pages.splice(deletedPageLocation, 1);
this.pagesChanged.next(this.pages.slice());
}
findPageIndex() {
for(var i=0; i < this.pages.length; i++) {
if (this.pages[i].pageNumber == this.currentPage) {
return i;
}
}
我想简化为:
let deletedPageLocation = this.pages.indexOf(this.pages.filter(page => page.pageNumber == pageNumber)[0]);
但我无法找到让它返回值的方法。有什么建议吗?
答案 0 :(得分:0)
var found = $filter('filter')($scope.pages, { pageNumberinPages: pagenumberSearching },true);
它将返回与搜索匹配的对象数组。
我希望这会有所帮助。
答案 1 :(得分:0)
您也可以使用find
和indexOf
来完成此操作。我发现它比使用过滤器容易得多。以下是您的问题的代码示例:
deletePage(item){
let deleteItem = this.pages.find(this.findIndexToUpdate, item.pageId);
let index = this.pages.indexOf(deleteItem);
if(index > -1){
this.pages.splice(index, 1);
}
}
findIndexToUpdate(item) {
console.log("this: " + this)
return item.pageId === this;
}