首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascript中删除对象的空白属性

在Javascript中删除对象的空白属性
EN

Stack Overflow用户
提问于 2008-11-13 11:02:13
回答 37查看 356.2K关注 0票数 395

如何删除JavaScript对象中为undefinednull的所有属性?

(问题类似于阵列的this one )

EN

回答 37

Stack Overflow用户

回答已采纳

发布于 2008-11-13 03:18:39

您可以遍历对象:

代码语言:javascript
运行
复制
var test = {
  test1: null,
  test2: 'somestring',
  test3: 3,
}

function clean(obj) {
  for (var propName in obj) {
    if (obj[propName] === null || obj[propName] === undefined) {
      delete obj[propName];
    }
  }
  return obj
}

console.log(test);
console.log(clean(test));

如果您担心此属性删除不会运行对象的proptype链,您还可以:

代码语言:javascript
运行
复制
function clean(obj) {
  var propNames = Object.getOwnPropertyNames(obj);
  for (var i = 0; i < propNames.length; i++) {
    var propName = propNames[i];
    if (obj[propName] === null || obj[propName] === undefined) {
      delete obj[propName];
    }
  }
}

关于null和undefined的一些注意事项:

代码语言:javascript
运行
复制
test.test1 === null; // true
test.test1 == null; // true

test.notaprop === null; // false
test.notaprop == null; // true

test.notaprop === undefined; // true
test.notaprop == undefined; // true
票数 263
EN

Stack Overflow用户

发布于 2016-03-08 23:27:49

如果您使用的是lodash或underscore.js,这里有一个简单的解决方案:

代码语言:javascript
运行
复制
var obj = {name: 'John', age: null};

var compacted = _.pickBy(obj);

这将只适用于lodash 4,pre lodash 4或underscore.js,使用_.pick(obj, _.identity)

票数 120
EN

Stack Overflow用户

发布于 2014-06-13 01:18:00

如果有人需要欧文(和埃里克)答案的递归版本,那就是:

代码语言:javascript
运行
复制
/**
 * Delete all null (or undefined) properties from an object.
 * Set 'recurse' to true if you also want to delete properties in nested objects.
 */
function delete_null_properties(test, recurse) {
    for (var i in test) {
        if (test[i] === null) {
            delete test[i];
        } else if (recurse && typeof test[i] === 'object') {
            delete_null_properties(test[i], recurse);
        }
    }
}
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/286141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档