- Source:
 
all the mixins added to _
        
        
    
    Methods
deepFindBy(collection, propName, propValue, childrenPropNameopt) → {*}
- Source:
 
    deeply searches in a recursive tree structure with (same structure) childrenPropName or 'children' property
looking for an item with the propName === propValue
    looking for an item with the propName === propValue
Example
eg. usage
var tree = [{
  id: '1', status: 'enabled', items: [{
    id: '1.1', status: 'enabled', items: [{
      id: '1.1.1', status: 'enabled'
    }, {
      id: '1.1.2', status: 'disabled'
    }]
  }, {
    id: '1.2', status: 'disabled'
  }]
 }, {
  id: '2', status: 'disabled', items: [{
    id: '2.1', status: 'enabled'
  }, {
    id: '2.2', status: 'enabled'
  }]
 }, {
  id: '3', status: 'enabled', items: [{
    id: '3.1', status: 'disabled'
  }, {
    id: '3.2', status: 'enabled'
  }, {
    id: '3.3', status: 'enabled'
  }]
}];
console.log(_.deepFindBy(tree, 'id', '1.1.1', 'items');
// logs {
  id: '1.1.1', status: 'enabled'
}
console.log(_.deepFindBy(tree, function(item) {
  return item.id === '3.2'
}, null, 'items');
// logs {
  id: '3.2', status: 'enabled'
}
    Parameters:
| Name | Type | Attributes | Default | Description | 
|---|---|---|---|---|
collection | 
            
            Array | object | the collection | ||
propName | 
            
            string | function | the property name or the predicate function to invoke (item will be passed as parameter to the predicate) | ||
propValue | 
            
            * | the property value | ||
childrenPropName | 
            
            string | 
                
                    <optional> | 
            
            
                
                
                    'children'
                
                 | 
            
            the children prop name | 
Returns:
- Type
 - *
 
deepMap(collection, childrenPropNameopt, mapCallback)
- Source:
 
    deeply maps a recursive tree structure with (same structure) childrenPropName or 'children' property
    Example
eg. usage
var tree = [{
  id: '1', status: 'enabled', items: [{
    id: '1.1', status: 'enabled', items: [{
      id: '1.1.1', status: 'enabled'
    }, {
      id: '1.1.2', status: 'disabled'
    }]
  }, {
    id: '1.2', status: 'disabled'
  }]
}];
console.log(_.deepMap(tree, 'items', function(treeItem) {
  return {
    id: treeItem.id,
    status: treeItem.status,
    combo: treeItem.id + '-' + treeItem.status
  };
});
// logs [{
 id: '1', status: 'enabled', combo: '1-enabled' items: [{
   id: '1.1', status: 'enabled', combo: '1.1-enabled', items: [{
     id: '1.1.1', status: 'enabled', combo: '1.1.1-enabled'
   }, {
     id: '1.1.2', status: 'disabled', combo: '1.1.2-disabled'
   }]
 }, {
   id: '1.2', status: 'disabled', combo: '1.2-disabled'
 }]
}]
    Parameters:
| Name | Type | Attributes | Default | Description | 
|---|---|---|---|---|
collection | 
            
            Array | object | the collection to use for the deep mapping | ||
childrenPropName | 
            
            string | 
                
                    <optional> | 
            
            
                
                
                    'children'
                
                 | 
            
            the property name to use for children collection | 
mapCallback | 
            
            function | the item mapping callback | 
deepOrderBy(collection, propNames, propDirections, childrenPropNameopt) → {Array|object}
- Source:
 
    deeply sorts a recursive tree structure with (same structure) childrenPropName or 'children' property
    Example
eg. usage
var tree = [{
  id: '1', status: 'enabled', items: [{
    id: '1.1', status: 'enabled', items: [{
      id: '1.1.1', status: 'enabled'
    }, {
      id: '1.1.2', status: 'disabled'
    }]
  }, {
    id: '1.2', status: 'disabled'
  }]
 }, {
  id: '2', status: 'disabled', items: [{
    id: '2.1', status: 'enabled'
  }, {
    id: '2.2', status: 'enabled'
  }]
 }, {
  id: '3', status: 'enabled', items: [{
    id: '3.1', status: 'disabled'
  }, {
    id: '3.2', status: 'enabled'
  }, {
    id: '3.3', status: 'enabled'
  }]
}];
console.log(_.deepOrderBy(tree, ['id'], ['desc'], 'items');
// logs [{
  id: '3', status: 'enabled', items: [{
    id: '3.3', status: 'enabled'
  }, {
    id: '3.2', status: 'disabled'
  }, {
    id: '3.1', status: 'enabled'
  }]
 }, {
  id: '2', status: 'disabled', items: [{
    id: '2.2', status: 'enabled'
  }, {
    id: '2.1', status: 'enabled'
  }]
 }, {
  id: '1', status: 'enabled', items: [{
    id: '1.2', status: 'disabled'
  }, {
    id: '1.1', status: 'enabled', items: [{
      id: '1.1.2', status: 'enabled'
    }, {
      id: '1.1.1', status: 'disabled'
    }]
  }]
}]
    Parameters:
| Name | Type | Attributes | Default | Description | 
|---|---|---|---|---|
collection | 
            
            Array | object | the collection | ||
propNames | 
            
            Array | string | the list of property names to sort | ||
propDirections | 
            
            Array | string | the list of order by direction to use with propNames | ||
childrenPropName | 
            
            string | 
                
                    <optional> | 
            
            
                
                
                    'children'
                
                 | 
            
            the children prop name | 
Returns:
- Type
 - Array | object
 
filterByValues(collection, key, values) → {Array}
- Source:
 
    filters a collection with a list of values specified for one property
    Example
eg. usage
var collection = [{
  id: 1, status: 'active'
}, {
  id: 2, status: 'disabled'
}, {
  id: 3, status: 'unactive'
}];
var allowedValues = ['active', 'unactive'];
console.log(_.filterByValues(collection, 'status', allowedValues);
// logs [{id: 1, status: 'active'}, {id: 3, status: 'unactive'}]
    Parameters:
| Name | Type | Description | 
|---|---|---|
collection | 
            
            Array | object | the collection to filter | 
key | 
            
            string | the key to be used as property name | 
values | 
            
            Array | the list of values to check | 
Returns:
- Type
 - Array
 
isPercentage(s) → {boolean}
- Source:
 
    checks if a string is a percentage value
    Example
eg. usage
var s = '23.97%';
console.log(_.isPercentage(s)); // true
console.log(_.isPercentage('50%')); // true
console.log(_.isPercentage(10)); // false
    Parameters:
| Name | Type | Description | 
|---|---|---|
s | 
            
            string | the string | 
Returns:
- Type
 - boolean
 
parsePercentage(s) → {null|number}
- Source:
 
    parses float value in a percentage string
    Example
eg. usage
var p = '50.5%';
console.log(_.parsePercentage(p)); // 50.5
console.log(_.parsePercentage('100%')); // 100
console.log(_.parsePercentage(25.3)); // null
    Parameters:
| Name | Type | Description | 
|---|---|---|
s | 
            
            string | the percentage string | 
Returns:
- Type
 - null | number
 
pullAllByComparator(collection, values, comparator, iteratee) → {array}
- Source:
 - To Do:
 - 
        
- document method
 
 
Parameters:
| Name | Type | Description | 
|---|---|---|
collection | 
            
            collection | |
values | 
            
            array | |
comparator | 
            
            function | |
iteratee | 
            
            function | 
Returns:
- Type
 - array
 
timesRange(start, end, iteratee, reverse)
- Source:
 
    an implementation of _.times by lodash, where you can specify start & end numbers
    Examples
eg. usage
_.timesRange(5, 10, function(i) {
  console.log(i);
});
// logs
5
6
7
8
9
10
        or
_.timesRange(5, 10, function(i) {
  console.log(i);
}, true);
// logs
10
9
8
7
6
5
    Parameters:
| Name | Type | Description | 
|---|---|---|
start | 
            
            number | start num of times to invoke iteratee | 
end | 
            
            number | end num of times to invoke iteratee | 
iteratee | 
            
            function | the iteratee function to invoke the iteratee will be invoked passing che cycle indicator as i so the iteratee has to be something like this 
function(i) {}
 | 
        
reverse | 
            
            boolean | specify if you want reverse cycle | 
timesReverse(times, iteratee)
- Source:
 
    a reverse implementation of _.times by lodash
    Example
eg. usage
_.timesReverse(5, function(i) {
  console.log(i);
});
// logs
5
4
3
2
1
    Parameters:
| Name | Type | Description | 
|---|---|---|
times | 
            
            number | num of times to invoke iteratee | 
iteratee | 
            
            function | the iteratee function to invoke the iteratee will be invoked passing che cycle indicator as i so the iteratee has to be something like this 
function(i) {}
 |