Skip to content

Instantly share code, notes, and snippets.

@aceslick911
Forked from DanDiplo/JS-LINQ.js
Last active May 6, 2020 06:53
Show Gist options
  • Save aceslick911/d932458b07f729d2fba5b5d01f77636e to your computer and use it in GitHub Desktop.
Save aceslick911/d932458b07f729d2fba5b5d01f77636e 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 Angelo Perera
// 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 }
];
// 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);
// and, of course, you can chain function calls
var namesOfPeopleOver30OrderedDesc = people.filter((person)=> person.age > 30)
.map((person) => person.name)
.sort((a, b) => a < b ? 1 : 0);
console.log("And now.. the names of all people over 30 ordered by name descending");
console.log(namesOfPeopleOver30OrderedDesc);
@aceslick911
Copy link
Author

Updated javascript to 2020 spec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment