下划线如何合并过滤的对象或在集合中找到两个属性?

时间:2014-01-24 09:53:05

标签: jquery underscore.js

我有一个对象数组,从我需要找到'age = 1'和'name = one'的对象然后如何将它们组合起来..

我试试..

var array = [
    {'name':'one', "age":'3'},
    {'name':'two', "age":'1'},
    {'name':'three', "age":'3'},
    {'name':'four', "age":'1'},
    {'name':'one', "age":'7'}
]
var required = ['one', '1'];

var name = _.where(array, {'name':'one'});
var age = _.where(array, {'age':'1'});

var combine = $.extend({}, name, age ) 
console.log(combine); // getting only age based objects...

如何使用下划线方法本身获取两个属性对象?

Demo

2 个答案:

答案 0 :(得分:1)

您可以使用reduce功能。 Demo

var combine = _.reduce(array, function(result, obj) {
    if (obj.name === 'one' || obj.age === '1') {result.push(obj);}
    return result;
}, []);

答案 1 :(得分:1)

一般过滤/搜索功能是_.filter

  

过滤 _.filter(list, iterator, [context])

     

查看列表中的每个值,返回通过真值测试的所有值的数组(迭代器)。委派原生过滤器方法(如果存在)。

所以你想要:

_(array).filter(function(e) {
    return e.name === 'one' || e.age === '1';
});

演示:http://jsfiddle.net/ambiguous/aw2Hj/