Skip to content

Instantly share code, notes, and snippets.

@Kirill255
Created April 2, 2019 19:39
Show Gist options
  • Save Kirill255/b5bc90f4ae7c33f29f2f88936cf5b3fe to your computer and use it in GitHub Desktop.
Save Kirill255/b5bc90f4ae7c33f29f2f88936cf5b3fe to your computer and use it in GitHub Desktop.
const { Map, List, Set, fromJS } = Immutable;
// log
const log = (...args) => console.log(...args.map((arg) => JSON.parse(JSON.stringify(arg))));
// users
const users = fromJS([
{
name: "Vasya",
surname: "Ivanov",
age: 22,
interests: ["computers", "food"]
},
{
name: "Ivan",
surname: "Tretyakov",
age: 34,
interests: ["computers", "food", "cars"]
},
{
name: "Daryna",
surname: "Petrova",
age: 21,
interests: ["cars", "math"]
},
{
name: "Petro",
surname: "Nalyvaiko",
age: 45,
interests: ["computers", "food", "math"]
}
]);
log("--- filtering objects ---");
{
const search = "pet";
const filteredUsers = users.filter(
(user) => (user.get("name") + user.get("surname")).toLowerCase().search(search) !== -1
);
log(filteredUsers);
}
log("--- all users with computers in interests ---");
{
const interest = "computers";
const filteredUsers = users.filter((user) => user.get("interests").includes(interest));
log(filteredUsers);
}
log("--- all users with computers in interests ---");
{
const interest = "computers";
const filteredUsers = users.filter((user) => user.get("interests").includes(interest));
log(filteredUsers);
}
log("--- interests of all users ---");
{
const interests = users.reduce(
(interestSet, user) => interestSet.union(user.get("interests")),
new Set()
);
log(interests);
}
log("--- sort by age ---");
{
const sortedUsers = users.sortBy((user) => user.get("age"));
log(sortedUsers);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment