首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有流行的Javascript框架提供修剪对象的实用程序?

有没有流行的Javascript框架提供修剪对象的实用程序?
EN

Stack Overflow用户
提问于 2009-08-13 16:59:32
回答 1查看 137关注 0票数 0

我们在一个UI密集度较低的项目上使用jQuery,而在其他项目上一直在使用ExtJS。无论如何,我很好奇是否有任何流行的库,如ExtJS、jQuery或其他库,提供了“修剪”对象的实用程序?我的意思是,如果键不包含值,则删除键。

我设计了我自己的(简单的)实现,如下所示,所以这没什么大不了的。尽管我很好奇,但我相信这通常是有用的。我已经在谷歌上搜索了"jquery prune object“,但似乎没有值得研究的结果,当然我可能是错的;)

代码语言:javascript
复制
function pruneObj(obj) {
    var empty = [];
    for (var attr in obj) {
        if (!obj[attr]) {
            empty.push(attr); //rather than trying to delete the element in place
        }
    }
    for (var i=0, n=empty.length; i<n; i++) {
        delete(obj[empty[i]]);
    }
    return obj;
}
EN

Stack Overflow用户

回答已采纳

发布于 2009-08-13 17:12:27

所以:

代码语言:javascript
复制
var obj = { hasFoo: false, count: 0 }

(在调用prunObj(obj)之后)是否只有{}

我不认为有任何库会假设什么值是“空的”。它是一个破坏性/变化性太强的函数,不能作为一组标准的实用函数的一部分。

许多库或浏览器都有一个功能,可以从数组中过滤出不符合特定条件的项。例如filter

代码语言:javascript
复制
list.filter(function(item){
    return !item.foo
})

将筛选出list中在foo属性中具有"falsey" value的项。

编辑

进一步考虑,jQuery和Prototype似乎都认为undefined是“空的”。jQuery的extend函数可以用undefined实现我想要的功能,尽管使用的语法略有不同,并且不会改变传递的参数:

代码语言:javascript
复制
A = { hasFoo: false, count: 0, foo: null, bar: undefined };
B = jQuery.extend({}, A); // B = { hasFoo: false, count: 0, foo: null }

"jQuery""Object"替换为原型等效项。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1273279

复制
相关文章

相似问题

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