ui
This commit is contained in:
+60
@@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
var values = require('../helpers/values');
|
||||
var nestedValue = require('../helpers/nestedValue');
|
||||
|
||||
module.exports = function where(key, operator, value) {
|
||||
var comparisonOperator = operator;
|
||||
var comparisonValue = value;
|
||||
|
||||
var items = values(this.items);
|
||||
|
||||
if (operator === undefined || operator === true) {
|
||||
return new this.constructor(items.filter(function (item) {
|
||||
return nestedValue(item, key);
|
||||
}));
|
||||
}
|
||||
|
||||
if (operator === false) {
|
||||
return new this.constructor(items.filter(function (item) {
|
||||
return !nestedValue(item, key);
|
||||
}));
|
||||
}
|
||||
|
||||
if (value === undefined) {
|
||||
comparisonValue = operator;
|
||||
comparisonOperator = '===';
|
||||
}
|
||||
|
||||
var collection = items.filter(function (item) {
|
||||
switch (comparisonOperator) {
|
||||
case '==':
|
||||
return nestedValue(item, key) === Number(comparisonValue) || nestedValue(item, key) === comparisonValue.toString();
|
||||
|
||||
default:
|
||||
case '===':
|
||||
return nestedValue(item, key) === comparisonValue;
|
||||
|
||||
case '!=':
|
||||
case '<>':
|
||||
return nestedValue(item, key) !== Number(comparisonValue) && nestedValue(item, key) !== comparisonValue.toString();
|
||||
|
||||
case '!==':
|
||||
return nestedValue(item, key) !== comparisonValue;
|
||||
|
||||
case '<':
|
||||
return nestedValue(item, key) < comparisonValue;
|
||||
|
||||
case '<=':
|
||||
return nestedValue(item, key) <= comparisonValue;
|
||||
|
||||
case '>':
|
||||
return nestedValue(item, key) > comparisonValue;
|
||||
|
||||
case '>=':
|
||||
return nestedValue(item, key) >= comparisonValue;
|
||||
}
|
||||
});
|
||||
|
||||
return new this.constructor(collection);
|
||||
};
|
||||
Reference in New Issue
Block a user