首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JavaScript对象中删除数据

从JavaScript对象中删除数据
EN

Stack Overflow用户
提问于 2014-05-23 19:40:02
回答 2查看 58关注 0票数 0

我有一个JavaScript对象info,当我在firebug控制台中执行_(info).values()时,我得到。

代码语言:javascript
复制
[Object {}, Object { a=6, b=7, more...}, Object { a=2, b=21, more...}, Object {}, Object { a=2, b=9, more...}]

那么,如何使用下划线筛选器或任何其他有效的技术从上面的Object {}对象中删除带有info的项?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-23 20:00:12

下划线

代码语言:javascript
复制
_.pick(info, _.filter(_.keys(info), function(key) {
    return _.keys(info[key]).length > 0;
}));

抽象成一个函数

代码语言:javascript
复制
_.filterObject = function(obj, callback) {
    return _.pick(obj, _.filter(_.keys(obj), callback))
};

_.filterObject(info, function(key) {
    return _keys(info[key]).length > 0;
})

http://jsfiddle.net/mendesjuan/2kf8C/1/

解释

  • _.pick返回一个只具有传入属性的新对象。
  • _.filter只返回我们想要的属性,那些有键的属性

请注意,这将返回一个新对象,它不会修改原来的

票数 0
EN

Stack Overflow用户

发布于 2014-05-23 19:48:29

Javascript解决方案:

代码语言:javascript
复制
var ob={a:{}, b:{ a:6}, c: { a:2}};
function removeEmpty(ob){
    for(var i in ob){
        if(typeof(ob[i])=='object'){
            var keys=Object.keys(ob[i]);
            if(keys.length==0) delete ob[i];
        }
    }
}
removeEmpty(ob);
console.log(ob); // b:{a:6}, c{a:2}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23837240

复制
相关文章

相似问题

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