@Coder321

Проверка обьекта на наличие ключей?

У меня есть обьект который нужно проверить на наличие и есть маасив ключей которые нужно проверить, массив в таком виде:
let absentKeys = [];
let keys = [ 'test', 'user.name', 'article.author.name' ];

если такого ключа нету, мне нужно записать в absentKeys строку с массива keys. Может кто поможет?
  • Вопрос задан
  • 289 просмотров
Решения вопроса 1
@f_ban
function isHasPropertyChain(obj, propertyChain){
  if(!(obj instanceof Object)) throw new TypeError("obj должен быть объектом");
  if((!(propertyChain instanceof Array)) && (!(typeof(propertyChain) === 'string'))) throw new TypeError("propertyChain должен строкой или массивом");
    
  var properties = (propertyChain instanceof Array)
      ? propertyChain
      : propertyChain.split('.');

  if (properties.length == 0) return false;
  
  var testedProp = properties[0];
  
  var res = (testedProp in obj);

  if(res){
   if((properties.length > 1)){
     return (obj[testedProp] instanceof Object) &&  isHasPropertyChain(obj[testedProp], properties.splice(1));
   }
  }
  
  return res;
}

function predicator(v){
  return !isHasPropertyChain(this, v);
}

var obj = {/* тестируемый объект */};

absentKeys = keys.filter(predicator, obj);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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