下划线,过滤掉不需要的对象

Underscore, filter out unnecessary objects

所以我有一大堆对象需要变成一个小对象。

它有 50-60 个对象,我需要过滤成一个新的对象数组,其中只有 3 个。

看起来像

myOb = {{"ob1": 1},{"ob2": 1},{"ob3": 1},{"ob4": 1},{"ob5": 1}..... 

等等

我需要将它变成一个只有 ob1、ob2 和 ob3 的 obj - 好喜欢

 myOb ={{"ob1": 1},{"ob2": 1},{"ob3": 1}}

所以像 -

myOb = _.filter(myOb, function(object){
          return ob1, ob2, ob3 (??)
   });

不确定如何使用下划线解决这个问题(如果不需要下划线,则直接使用 javascript)。谢谢!

从 ecma5.1 开始你可以使用 Array.filter 函数

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

只检查对象中是否存在属性:

myOb = _.filter(myOb, function(obj){
    return 'ob1' in obj || 'ob2' in obj || 'ob3' in obj;
});

或者:

var keep = {obj1: true, obj2: true, obj3: true};
myOb = _.filter(myOb, function(obj){
    return keep[_.keys(obj)[0]];
});

Moaaar underscore.js:

var keep = ['obj1', 'obj2', 'obj2']; 
myOb = _.filter(myOb, function(obj){
    return _.some(keep, function(k) { return _.has(obj, k);});
});

没有underscore.js:

var keep = ['obj1', 'obj2', 'obj2']; 
myOb = myOb.filter(function(obj){
    return keep.some(function(k) { return k in obj; });
});