2015-01-20 3 views
1

Мы используем underscore.js с помощью AngularJS .Мы использовать _.where, чтобы найти данныеНайти меньше или больше, чем в underscore.js

$scope.myData=[{age:15}] 

Таким образом, чтобы найти из нее мы используем

_.where($scope.myData,{age:15}) 

но найти что-то вроде _.where ($ scope.myData, {возраст < 15}), он дает ошибку, есть ли способ сделать .Или мы должны идти с _.filter

_.filter($scope.myData,function(val){ 
    if(val.age<20) 
    { 
    return val 
    }}) 
+2

Фильтр - это правильный путь, поскольку вы фильтруете коллекцию. Где и это кузена findWhere только взять объект. Создайте предикат, который называется нечто вроде isChild, например. function isChild (person) {return person.age <18; } и использовать его как второй параметр для _.filter, например. var children = _.filter ($ scope.myData, isChild). –

+3

Имейте в виду, что 'where' немного больше, чем передняя часть для' filter', которая преобразует объект в функцию, которая проверяет свойства для равенства. Если равенство - это не то, что вам нужно, тогда 'where' не является правильным инструментом. –

ответ

3

Как вы можете видеть из исходного кода подчёркивания where действительно сахар для filter

_.where = function(obj, attrs) { 
    return _.filter(obj, _.matches(attrs)); 
}; 

http://underscorejs.org/docs/underscore.html#section-28

Так что, да, вы должны использовать filter!

_.filter(myArray, function(v) { return v.age < 15 }) 
+0

Охх внутренне они также используют фильтр, поэтому лучший вариант - использовать _.фильтр. благодаря – abhaygarg12493

0

Для достижения этой цели мы можем использовать функцию _.filter ИЛИ _.find для подражания.

_.filter($scope.myData, function(v) { return (60 >= v.Age && 94 <= v.Age)}) 

_.find($scope.myData, function(v){ return (60 >= v.Age && 94 <= v.Age) }); 
Смежные вопросы