无法删除Javascript中的对象属性

时间:2018-07-03 22:25:55

标签: javascript node.js object

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 :(得分:6)

您无法删除[],这就是您传递给该函数的全部内容。

您可以创建类似的功能

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];
}