V tomto článku demonštrujem ako rýchlo zistiť, či jedna množina prvkov obsahuje povolené prvky, ktoré sú definované v druhej množine prvkov.
V praxi môže ísť napríklad o kontrolu REST metódy PUT, kedy je pre aktualizáciu povolená len určitá skupina entít a tá sa testuje voči zaslaným údajom. Ak je v zaslaných dátach iná entita ako v množine povolených entít, operácia sa nevykoná a odošle sa chybová správa o nesprávnom zložení požiadavky.
V minulosti sme tento druh problému riešili cez cykly a indexOf()
, no vďaka postupnému vývoju jazyka JavaScript je už možné podobné typy úloh vykonávať oveľa jednoduchšie.
Príklad s výsledkom true
.
let user = {
"name": "Peter",
"age": "24",
"occupation": "teacher"
};
let keys = Object.keys(user);
let allowedKeys = ["name", "age", "occupation", "username", "password"];
let result = keys.every(item => allowedKeys.includes(item));
console.log(result);
Príklad s výsledkom false
.
let user = {
"username": "Peter",
"age": "24",
"occupation": "teacher"
};
let keys = Object.keys(user);
let allowedKeys = ["name", "age", "occupation", "username", "password"];
let result = keys.every(item => allowedKeys.includes(item));
console.log(result);
V druhom príklade bola zaslaná entita/atribút/vlastnosť, ktorá nie je v množine povolených entít – pole s textovými prvkami. Namiesto entity name
bola zaslaná entita username
, a tak request nezodpovedá štruktúre, ktorá sa vyžaduje.