是否有流行的Javascript框架提供了修剪对象的实用程序?
我们在一个UI不太密集的项目上使用jQuery,而在其他项目上使用ExtJS。不管怎样,我很好奇是否有流行的库,如ExtJS、jQuery或其他库,提供了一个用于“修剪”对象的实用程序?我的意思是,删除不包含值的键 我已经设计了我自己的(天真的)实现,如下所示,所以没什么大不了的。尽管我很好奇,但我相信这可能是有用的。我在谷歌上搜索过“jquery prune object”,但似乎没有值得调查的结果,当然我可能错了;)是否有流行的Javascript框架提供了修剪对象的实用程序?,javascript,object,Javascript,Object,我们在一个UI不太密集的项目上使用jQuery,而在其他项目上使用ExtJS。不管怎样,我很好奇是否有流行的库,如ExtJS、jQuery或其他库,提供了一个用于“修剪”对象的实用程序?我的意思是,删除不包含值的键 我已经设计了我自己的(天真的)实现,如下所示,所以没什么大不了的。尽管我很好奇,但我相信这可能是有用的。我在谷歌上搜索过“jquery prune object”,但似乎没有值得调查的结果,当然我可能错了;) 函数pruneObj(obj){ var空=[]; for(obj中的va
函数pruneObj(obj){
var空=[];
for(obj中的var attr){
如果(!obj[attr]){
empty.push(attr);//而不是尝试就地删除元素
}
}
对于(var i=0,n=empty.length;iSo:
(在调用prunObj(obj)
)之后)是否只是{}
我不认为有任何库会假设哪些值是“空”的。它对于一个函数来说太具有破坏性/变异性,不能作为一组标准实用函数的一部分
许多库或浏览器都包含一种功能,可以从数组中筛选出不符合特定条件的项。例如:
将筛选出列表
中在foo
属性中具有
编辑:
进一步考虑,undefined
似乎被jQuery和.jQuery的extend
函数都认为是“空的”。jQuery的undefined
函数可以实现我认为您在undefined
中的目标,尽管语法稍有不同,并且不会改变传递的参数:
A = { hasFoo: false, count: 0, foo: null, bar: undefined };
B = jQuery.extend({}, A); // B = { hasFoo: false, count: 0, foo: null }
将“jQuery”
与“Object”
交换为原型等价物。你是对的,上面的obj在使用了我的pruneObj函数之后就{}。这正是我说我的实现很幼稚的原因;)谢谢你提醒我各种库的过滤功能。但是它们过滤对象而不是你所说的列表吗?不管怎样,这给了我一个更好的研究起点,所以谢谢!
var obj = { hasFoo: false, count: 0 }
list.filter(function(item){
return !item.foo
})
A = { hasFoo: false, count: 0, foo: null, bar: undefined };
B = jQuery.extend({}, A); // B = { hasFoo: false, count: 0, foo: null }