我有一个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
项?
答案 0 :(得分:1)
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 :(得分:0)
下划线
_.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
只返回我们想要的属性,带有键的属性
请注意,这会返回一个新对象,它不会修改原始