我有一个JavaScript对象info,当我在firebug控制台中执行_(info).values()时,我得到。
[Object {}, Object { a=6, b=7, more...}, Object { a=2, b=21, more...}, Object {}, Object { a=2, b=9, more...}]那么,如何使用下划线筛选器或任何其他有效的技术从上面的Object {}对象中删除带有info的项?
发布于 2014-05-23 20:00:12
下划线
_.pick(info, _.filter(_.keys(info), function(key) {
return _.keys(info[key]).length > 0;
}));抽象成一个函数
_.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只返回我们想要的属性,那些有键的属性请注意,这将返回一个新对象,它不会修改原来的
发布于 2014-05-23 19:48:29
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}https://stackoverflow.com/questions/23837240
复制相似问题