Проверить, существует ли свойство в объекте или нет в JavaScript?

#javascript #function #object

Вопрос:

У меня есть одна постановка проблемы.

Реализуйте функцию propertyExists(obj, путь), которая принимает объект и путь (строку) в качестве аргументов и возвращает «False», если свойство не существует для этого объекта или равно нулю, иначе возвращает значение свойства.

И вот решение.

 function propertyExists(obj,path) {  // Write logic here  let result = obj.hasOwnProperty(path);  if(result)  {  return (obj.path);   }  else  {  return result;   } }  

Является ли это правильным способом сделать это?

Комментарии:

1. Сталкиваетесь ли вы с какими — либо проблемами в связи с этой реализацией?

2. Это зависит от того, каково определение пути, для меня путь был бы чем-то вроде.. header.customer.address.lines[0] и т.д. Но тогда вы назвали его propertyExists , так что, скорее всего, это все равно собственность, так что не знаю, почему это не так propertyExists(obj, property) Вы, вероятно return obj[path] , тоже хотите.

3. Проверка кажется неполной в соответствии с требованиями. Вы могли бы быть здесь более конкретны. -gt; if (obj[path] === undefined || obj[path] === null) { return false; } else { return obj[path]; }

4. @SifatHaque Да, когда я отправляю решение, я получаю сообщение с неправильным ответом

Ответ №1:

Несколько проблем: первое имя функции должно представлять то, что она делает, путь как имя переменной расплывчат, но имя свойства как переменная ясно. что вам следует сделать, так это либо:

  1. функция записи называется «GetValue», она возвращает значение, если оно существует или равно нулю
 function getValue(obj,propertyName) {  if(!obj) { // if object not exist  return null;  }  return obj[propertyName];  } 
  1. функция записи, называемая «propertyExists», должна возвращать значение true, если существует другое значение false.
 function propertyExists(obj,propertyName) {  if(!obj) { // if object not exist  return false;  }  return obj.hasOwnProperty(propertyName);  }