ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как проверить объект на присутствие неизвестного ключа?

Как по проще сделать проверку на разрешенные ключи.
К примеру есть некий стандарт объект вида
{
 v: 1
 c: 3,
 g: 5
}

В объекте может быть только эти три ключа Object.keys(obj) ["v", "c", "g"], при чем объект может состоять только из 1 "разрешенного" ключа

Мне нужно проверить объект на нахождение в нем не разрешенного ключа и вывести true в случае обнаружения
В мою дурную голову пришла только мысль отсортировать ключи и проверять доступные "вручную", методом перебора каждого ключа, но код будет мягко говоря печальный =)
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@StockholmSyndrome
const valid = (obj, allowedKeys) => (v => v.length === 1 && allowedKeys.includes(v[0]))(Object.keys(obj))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
function isPermittedObject(obj) {
  if (!obj) return false;
  
  const permitted = new Set(["v", "c", "g"]);
  let max = 1;

  for (const key in obj)
    if (!permitted.has(key) || !max--) 
      return false;
  return true;
}

console.log(!isPermittedObject({
  v: 1,
  c: 3,
  g: 5
}))

console.log(!isPermittedObject({
  v: 1
}))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы