简体   繁体   English

无法删除Javascript中的对象属性

[英]Cannot delete object property in Javascript

obj = {a: []}

I want to delete obj.a . 我想删除obj.a This code works 此代码有效

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

This is not 这不是

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

_delete(obj.a) //not work

Any way to make it works? 什么办法能让它的工作原理?

You can't delete [] , which is all that you pass to the function. 您无法删除[] ,这是您传递给函数的全部内容。

You can create a function like 您可以创建一个像

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

and call it with 并用

_delete(obj, 'a');

I'd also add a check for what the property is, and if it exists at all. 我还要添加一个关于属性是什么,以及是否存在的检查。 As you seem to target an array, add a check if it's an array that gets passed: 当您似乎以数组为目标时,添加检查是否是通过的数组:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM