如何检查是否JavaScript数组保存与特定值属性,如果是这样,则返回true

问题描述 投票:0回答:5

我有一个选择 - 在角选项,我需要检查具有相同的ID数据库ID值,这就是我一直是这样的:

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
    for (let i = 0; i < this.role.applicationForms.length; i++) {
      if (this.role.applicationForms[i].id == amf.id) {
        return true;
      }
      else {
        return false;
      }
    }
 }

我的角部位:

<div class="col-lg-9">
     <select id="applicationModuleFormSelect" name="applicationModuleFormSelect" class="form-control multiselect-select-all" multiple="multiple" data-fouc>
        <option *ngFor="let amf of appModuleForms;" [value]="amf.id" [selected]="isDropdownValueSelected(amf)">{{amf.title}}</option>
     </select>
</div>

所以基本上我想循环中选择每个ID,如果我发现我的数组类似我将返回true,因为阵列this.role.applicationForms从数据库中保存的值,但可惜的是,这并不工作,没有什么是下拉列表中选择和我一起控制台测试登录它说,如果有3只值1,甚至存在..

谢谢你们干杯

javascript html arrays angular ecmascript-6
5个回答
1
投票

也许你需要为假值移动到结束返回,因为每return语句结束的功能。

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
    for (let i = 0; i < this.role.applicationForms.length; i++) {
        if (this.role.applicationForms[i].id == amf.id) {
            return true;
        }
    }
    return false;
}

1
投票

当第一元素的ID匹配,因为你回来每个校验值,此功能只适用。

您应该更新的代码是这样的:

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
    for (let i = 0; i < this.role.applicationForms.length; i++) {
        if (this.role.applicationForms[i].id == amf.id) {
            return true;
        }
    }
    return false;
}

0
投票

假设applicationForms是数组,则可以使用该方法some

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
  return this.role.applicationForms.some(({id}) => id === amf.id);
}

0
投票

使用some运营商,而不是循环在你的元素:

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
    return this.role.applicationForms.some(e => e.id === amf.id);
}

0
投票

你不需要for循环:

isDropdownValueSelected(amf: ApplicationModuleForm): boolean {
            if (this.role.applicationForms.find(x => x.id == amf.id)) {
                return true;
            }
            else {
                return false;
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.