下划线,过滤掉不需要的对象
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; });
});
所以我有一大堆对象需要变成一个小对象。
它有 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; });
});