Check if "data" contain items of Array

237 Views Asked by At
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    return new Promise((resolve, reject) => {
        this.securityService.securityActions().subscribe(
            data => {debugger;
            if(data = this.authorized.find(k => k=='AGREEMENTS_VIEW','AGREEMENTS_INSERT_UPDATE')){
                resolve(true);    
            }
                if(data != this.authorized){
                   resolve(false);
                }
            },
            error => {
                Utils.notifyErrors(error, this.notificationsService);

            }
        )
    });
}

I want to set true if data contains some items of "authorized".

Authorized is formed like this:

  authorized = [
        'AGREEMENTS_VIEW',
        'PROSPECTS_VIEW',
        'AGREEMENTS_INSERT_UPDATE',
        'PRODUCTS_INSERT_UPDATE',
        'PROSPECTS_INSERT_UPDATE',
        'DOCUMENTS_VIEW',
        'DOCUMENTS_INSERT_UPDATE',
    ];

So for example set true if data contains 'AGREEMENTS_VIEW'.

Right now if i set 2 value on K it doesnt work

2

There are 2 best solutions below

0
On

Use some, which returns true if the condition is matched.

return arrayOne.some(itemOfArrayOne => arrayTwo.includes(itemOfArrayOne));

You can replace includes with indexOf(XXX) !== -1.

3
On

It seems you have a syntax error:

data === this.authorized.find(k => k=='AGREEMENTS_VIEW')
//---^^^-----here