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
有什么办法可以使它起作用?
答案 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];
}