Удалить свойство из объекта - PullRequest
0 голосов
/ 27 октября 2019

Если объект obj имеет свойство prop, функция удаляет свойство из объекта и возвращает true, во всех остальных случаях возвращает false.

Сейчас этовозвращает правильное значение, но проверка, показывающая, было ли удалено свойство, не удалась.

Было бы это потому, что я пытаюсь delete из вновь созданного массива из объекта, а не из самого исходного объекта?

function removeProperty(obj, prop) {

  let newObj = Object.keys(obj);

  if(newObj.includes(prop)){

     delete newObj.prop

     return true

    }


  return false

}

Ответы [ 2 ]

4 голосов
/ 27 октября 2019

Похоже, желание это мутировать obj. В этом случае вы полностью создаете новый объект, к которому у вызывающей стороны нет доступа. Вы должны изменить свой код для удаления из obj

if (obj.hasOwnProperty(prop)) {
  delete obj[prop];
  return true;
}
return false;

Вот документация для hasOwnProperty Документация

1 голос
/ 27 октября 2019

В настоящее время вы пытаетесь удалить из массива ключей, а не из своего объекта, поэтому передаваемый вами объект не изменится. Вместо этого вам нужно удалить из obj. Кроме того, поскольку prop является динамическим, при удалении необходимо использовать обозначение в скобках . Наконец, чтобы проверить, является ли prop свойством в obj, вы можете использовать ключевое слово in, например, так:

function removeProperty(obj, prop) {
  if (prop in obj) {
    delete obj[prop];
    return true;
  }
  return false;
}

const obj = {
  prop: "name",
  age: 20
}

const res = removeProperty(obj, "prop");
console.log(obj);
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...