首页 > 解决方案 > 如何将嵌套的“for”优化为函数式编程

问题描述

我创建了一个函数来检查列表中是否有重复的手机号码。问题是我通过使用嵌套 for 来做到这一点。如何使用函数式编程优化此代码?

  checkDuplicate(): boolean {

    for (let i = 0; i < this.phoneList.length; i++) {
      for (let j = 0; j < this.phoneList.length; j++) {
        if (i != j) {
            if (this.phoneList[i].number === this.phoneList[j].number) {
              this.toastrService.error('Phone already in List!');
              return true;
            }
        }
      }
    }

    return false;
  }

标签: javascriptangulartypescript

解决方案


您可以制作一个仅包含唯一数字的 Set 并将 Set 的长度与原始数组的长度进行比较

hasDuplicates(): boolean {
  return new Set(this.phoneList.map(p => p.number)).size < this.phoneList.length
}

推荐阅读