Skip to content

Instantly share code, notes, and snippets.

@tomca32
Created September 21, 2015 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomca32/9412ea4b981031d7e83a to your computer and use it in GitHub Desktop.
Save tomca32/9412ea4b981031d7e83a to your computer and use it in GitHub Desktop.
Lodash examples for FE Guild
_ = require("lodash");
var result;
var DATA = [
{name: "Student One",
id: 1,
scores: [30, 50, 80]
},
{name: "Student Two",
id: 2,
scores: [85, 90, 82]
},
{name: "Student Three",
id: 3,
scores: [30, 40, 44]
},
{name: "Student Four",
id: 4,
scores: [24, 59, 34]
},
{name: "Student Five",
id: 5,
scores: [100, 97, 100]
}
];
//////////////// FINDING ////////////////////////////
// for (var i = 0; i < DATA.length; i += 1) {
// if (DATA[i].id === 2) {
// result = DATA[i];
// break;
// }
// }
// result = _.find(DATA, function(e) {return e.id === 2;});
//////////////// FILTERING /////////////////////////
// result = [];
// for (var i = 0; i < DATA.length; i += 1) {
// if (DATA[i].id > 2) {
// result.push(DATA[i]);
// }
// }
// var result = _.filter(DATA, function(e) {return e.id > 2;});
/////////////// REAL WORLD FILTERING ////////////////////
// var averageScore;
// result = [];
// for (var i = 0; i < DATA.length; i += 1) {
// averageScore = 0;
// for (var j = 0; j < DATA[i].scores.length; j += 1) {
// averageScore += DATA[i].scores[j];
// }
// averageScore = averageScore / DATA[i].scores.length;
// if (averageScore >= 50) {
// result.push(DATA[i]);
// }
// }
// result = _.filter(DATA, function(student) {
// return (_.reduce(student.scores, function(total, score) {
// return total + score;
// }) / student.scores.length) >= 50;
// });
//////////////// DEFERRING ///////////////////////
// setTimeout(function(someDOMManipulation), 1);
// _.defer(someDOMManipulation);
// _.debounce(function, time)
//////////////// PICKING ///////////////////////////////
var student = {
key: "123",
name: "First Last",
firstName: "First",
lastName: "Last",
middleName: "Middle",
formattedFirstName: "First"
};
// result = {id: student.key};
// result.name = student.name;
// result.firstName = student.firstName;
// result.lastName = student.lastName;
// result.middleName = student.middleName;
// result.formattedFirstName = student.formattedFirstName;
// result = _.merge({id: student.key}, _.pick(student, ['name', 'firstName', 'lastName', 'middleName', 'formattedFirstName']));
//////////////// CHAINING ///////////////////////////////
// result = {};
// for (var i = 0; i < DATA.length; i++) {
// var sum = 0;
// for (var j = 0; j < DATA[i].scores.length; j++) {
// sum += DATA[i].scores[j];
// }
// result[DATA[i].name] = sum / DATA[i].scores.length;
// }
// result = _(DATA)
// .indexBy('name')
// .mapValues(function(s) {return _.sum(s.scores) / s.scores.length})
// .value();
console.log(result);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment