所以我有一大堆物体需要变成一个小物体。
它有50-60个对象,我需要过滤到一个新的对象数组中,只有3个。
所以它看起来像
myOb = {{"ob1": 1},{"ob2": 1},{"ob3": 1},{"ob4": 1},{"ob5": 1}.....
等等
我需要把它变成一个obj,只有ob1,ob2和ob3在里面 -
myOb ={{"ob1": 1},{"ob2": 1},{"ob3": 1}}
类似于 -
myOb = _.filter(myOb, function(object){
return ob1, ob2, ob3 (??)
});
不确定如何使用下划线解决此问题(或者如果没有必要使用下划线,则只是简单的javascript)。谢谢!
答案 0 :(得分:3)
只需检查对象中是否存在该属性:
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);});
});
没有下划线:js:
var keep = ['obj1', 'obj2', 'obj2'];
myOb = myOb.filter(function(obj){
return keep.some(function(k) { return k in obj; });
});
答案 1 :(得分:1)
从ecma5.1开始,您可以使用Array.filter函数
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter