javascript - 如何从多深度 JavaScript 对象中删除空属性?

标签 javascript object

我有这个 JS 对象:

var test = {"code_operateur":[""],"cp_cult":["",""],"annee":["2011"],"ca_cult":[""]}

当我使用这个函数时:

for (i in test) {  
   if ( test[i] == "" || test[i] === null ) {  
       delete test[i];  
    }  
}

我得到:

{"cp_cult":["",""],"annee":["2011"]}

还不错,但我想删除空的“cp_cult”属性(它是一个数组,而不是另一个字符串)。

注意:我不想手动删除 key !

最佳答案

看起来你在这里问了 2 个问题。

  1. 如何删除对象的属性;和
  2. 如何判断一个对象是否实际上是一个数组。

您可以使用 delete 运算符删除对象的属性。

delete test.cp_cult;

在 JavaScript 中数组是对象,这意味着 typeof([]) 无益地返回 object。通常,人们通过使用框架中的函数(dojo.isArray 或类似的东西)或滚动他们自己的方法来确定对象是否为数组来解决这个问题。

没有 100% 保证的方法来确定一个对象是否实际上是一个数组。大多数人只是检查它是否具有数组的某些方法/属性 lengthpushpopshiftunshift

关于javascript - 如何从多深度 JavaScript 对象中删除空属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093192/

相关文章:

Angular 过滤器唯一的对象数组

javascript - 在 Angular 服务中将上传的文件转换为 base64

javascript - 需要根据对象数组对数组的迭代来获取属性

javascript - 如何在 JS 中创建全局静态方法

sql-server-2008 - 应用程序在 SQL 2008 计算机上找不到 Microsoft.SQLServer.SMO

Java无法从同一目录中的.class中找到符号

Javascript仅获取某个数组中包含的对象

javascript - jQuery - 获取表格单元格值

javascript - 用于简化javascript中表达式的递归函数

javascript - 如何为同一个键设置多个值而不覆盖以前的值?