Невозможно удалить свойство объекта в Javascript - PullRequest
0 голосов
/ 04 июля 2018
obj = {a: []}

Я хочу удалить obj.a. Этот код работает

if(!obj.a.length)
    delete obj.a //work

Это не

function _delete(o) {
    if(!o.length)
      delete o 
}

_delete(obj.a) //not work

Есть ли способ заставить это работать?

1 Ответ

0 голосов
/ 04 июля 2018

Вы не можете удалить [], это все, что вы передаете в функцию.

Вы можете создать такую ​​функцию, как

function _delete(obj, prop) {
    if (obj[prop] && ! obj[prop].length) delete obj[prop];
}

и позвоните по номеру

_delete(obj, 'a');

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

function _delete(obj, prop) {
    if (Array.isArray(obj[prop]) && ! obj[prop].length) delete obj[prop];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...