Skip to content

Instantly share code, notes, and snippets.

@pielegacy
Forked from DanDiplo/JS-LINQ.js
Last active March 19, 2018 03:39
Show Gist options
  • Save pielegacy/ea30ed746b610efc60e3c894b9261c49 to your computer and use it in GitHub Desktop.
Save pielegacy/ea30ed746b610efc60e3c894b9261c49 to your computer and use it in GitHub Desktop.
JavaScript equivalents of some common C# LINQ methods. To help me remember!
// JS array equivalents to C# LINQ methods - by Dan B.
// Here's a simple array of "person" objects
var people = [
{ name: "John", age: 20 },
{ name: "Mary", age: 35 },
{ name: "Arthur", age: 78 },
{ name: "Mike", age: 27 },
{ name: "Judy", age: 42 },
{ name: "Tim", age: 8 }
];
// find is equivalent to FirstOrDefault
var mary = people.find(item => item.name == "Mary");
console.log("Person named Mary");
console.log(mary);
// filter is equivalent to Where
var youngsters = people.filter(item => item.age < 30);
console.log("People younger than 30");
console.log(youngsters);
// map is equivalent to Select
var names = people.map((item) => item.name);
console.log("Just the names of people");
console.log(names);
// every is equivalent to All
var allUnder40 = people.every((item) => item.age < 40);
console.log("Are all people under 40?"); // false
console.log(allUnder40);
// some is equivalent to Any
var anyUnder30 = people.some((item) => item.age < 30);
console.log("Are any people under 30?");
console.log(anyUnder30); // true
// reduce is "kinda" equivalent to Aggregate (and also can be used to Sum)
var aggregate = people.reduce((item1, item2) => ({ name: '', age: item1.age + item2.age }));
console.log("Aggregate age");
console.log(aggregate.age); // { age: 210 }
// sort is "kinda" like OrderBy (but it sorts the array in place - eek!)
var orderedByName = people.sort((a, b) => a.name > b.name ? 1 : 0);
console.log("Ordered by name");
console.log(orderedByName);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment