let myGarden =
[{category:'veggi', alias: 'tomato', color: 'red', isFavorite: true},
{ category:'veggi', alias: 'pepper', color: 'yellow', isFavorite: true},
{ category:'flower', alias: 'zinnia', color: 'red', isFavorite: true},
{ category:'flower', alias: 'tulip', color: 'yellow', isFavorite: false},
{ category:'pet', alias: 'dog', color: 'tri-color', isFavorite: true},
{ category:'pet', alias: 'cat', color: 'black', isFavorite: true},
{ category:'tool', alias: 'pruning knife', color: 'black', isFavorite: false},
{ category:'tool', alias: 'planter', color: 'red', isFavorite: true}]
//List your living favorites with color
//Rules: one per color, ordered by color and alias
//Write to console My favorites: <list of favorites>
//Example: My favorites: green bean,white lilac
let favorites = _.filter(myGarden, 'isFavorite');
//console.log(favorites);
let living = _.reject(favorites, ['category', 'tool']);
//console.log(living);
let alpha = _.sortBy(living, ['color', 'alias']);
//console.log(alpha);
let colorGroups = _.groupBy(alpha, 'color');
//console.log(colorGroups);
let firstItemArray = _.map(colorGroups, function(group) {return group[0] ;});
//console.log(firstItemArray);
let transformedItems = _.map(firstItemArray, function(item){
let text = _.join([item.color, item.alias], " ");
return text;
});
console.log('My favorites: ' + transformedItems.toString());
//****************** Explicit chaining ************************/
let favEx = _.chain(myGarden)
.filter('isFavorite')
.reject(['category', 'tool'])
.sortBy(['color', 'alias'])
.groupBy('color')
.map(function(group) {return group[0];})
.map(function(item){
let text = _.join([item.color, item.alias], " ");
return text;
})
.value()
.toString();
console.log('My favorites: ' + favEx);
//****************** Implicit chaining ************************/
let favImpl = _(myGarden)
.filter('isFavorite')
.reject(['category', 'tool'])
.sortBy(['color', 'alias'])
.groupBy('color')
.map(function(group) {return group[0];})
.map(function(item){
let text = _.join([item.color, item.alias], " ");
return text;
})
.toString();
console.log('My favorites: ' + favImpl);