Published
Edited
Mar 11, 2020
1 fork
3 stars
Insert cell
Insert cell
Insert cell
Insert cell
persons = [
{
id: 325326,
firstname: "Dan",
lastname: "Tiger",
image: "url",
birthday: "03.18.1990",
gender: "Male",
hobbie: ["Football", "Reading"],
nationality: "switzerland",
friends: [325330, 325334],
residence: 10041
},
{
id: 325326,
firstname: "Fan",
lastname: "Tiger",
image: "url",
birthday: "03.18.2005",
gender: "Male",
hobbie: ["Football", "Reading"],
nationality: "switzerland",
friends: [325330, 325334],
residence: 10041
},
{
id: 325330,
firstname: "Frank",
lastname: "Lion",
image: "url",
birthday: "10.05.1991",
gender: "male",
hobbie: ["walking", "basketball"],
nationality: "syria",
friends: ["", "", ""],
residence: 10041
},
{
id: 325334,
firstname: "Bilal",
lastname: "Zakki",
image: "url",
birthday: "08.19.1999",
gender: "male",
hobbie: ["swimming", "walking"],
nationality: "canda",
friends: [325330, 325326],
residence: 10012
}
]
Insert cell
countries = [
{
city: "Zurich",
Land: "Switzerland",
residence: 10041
},
{
city: "Damascus",
Land: "Syria",
residence: 100963
},
{
city: "Toronto",
Land: "Canada",
residence: 10012
}
]
Insert cell
Insert cell
function getFullname(person) {
let first = person.firstname;
let last = person.lastname;
let name = first + " " + last;
return name;
}
Insert cell
function getAllFullnames(persons) {
const personNames = [];

persons.forEach(person => {
const name = getFullname(person);
personNames.push(name);
console.log(name);
});

return personNames;
}
Insert cell
getAllFullnames(persons)
Insert cell
function fullnameWithReduce02() {
let fullname = (objArr, property) => {
return objArr.reduce((names, objects) => {
let keys = objects[property];
names[keys] = [];
return names;
}, {});
};
let objectGroups = fullname(persons, 'firstname');
return objectGroups;
}
Insert cell
fullnameWithReduce02()
Insert cell
function fullnameWithReduce1(persons) {
return persons.reduce((acc, person) => {
let fullname = getFullname(person);
acc.push(fullname);
return acc;
}, []);
}
Insert cell
fullnameWithReduce1(persons)
Insert cell
Insert cell
function findPerson(firstname, lastname) {
for (let i = 0; i < persons.length; i++) {
if (persons[i].firstname == firstname && persons[i].lastname == lastname) {
return persons[i];
} else {
console.log('undefined');
}
}
// TODO: implement the same using Array.filter() or Array.find()
// and check the diff between .filter and .find

// 1. filter reduces the set of already matched elements, while find gets descendants of the matched element.

// 2. find() returns children of the match elements for the given selector, filter() looks at the matched elements and returns the ones that also match the given selector.
}
Insert cell
findPerson("Dan", "Tiger")
Insert cell
function findPerson_01(firstname, lastname, persons) {
return persons.find(person => {
return person.firstname == firstname && person.lastname;
});
}
Insert cell
findPerson_01("Dan", "Tiger", persons)
Insert cell
function filterPerson(firstname, lastname, persons) {
return persons.filter(person => {
return person.firstname == firstname && person.lastname;
});
}
Insert cell
filterPerson("Bilal", "Zakki", persons)
Insert cell
Insert cell
function average(ages) {
let sum = 0;
for (let i = 0; i < ages.length; i++) {
sum += ages[i];
}
return sum / ages.length;
}
Insert cell
average([10, 20, 2, 35, 30, 20, 31, 15])
Insert cell
md`Implement the same as above but this time use person.birthday to calculate the ages.`
Insert cell
// TODO: average alter basierend auf berechnetem Alter
Insert cell
// Average Ages ...
function avgAges(persons) {
const nowYear = new Date().getFullYear();
let sum = 0;

let ages = persons.map(person => {
return nowYear - new Date(person.birthday).getFullYear();
});
for (let age in ages) {
sum += ages[age];
}
return sum / ages.length;
}
Insert cell
avgAges(persons)
Insert cell
Insert cell
function ages() {
const ages = [26, 27, 26, 26, 28, 28, 29, 29, 30];
/*
const unique = (value, index, self) => {
return self.indexOf(value) === index;
};

const uniqueAges = ages.filter(unique);*/

const agesSet = new Set(ages);

return agesSet;
}
Insert cell
ages()
Insert cell
function ages01() {
var ages = [10, 20, 25, 33, 35, 25, 13, 26, 13, 20, 62, 33];
var uniqueAges = [];
var found = false;
var count = 0;

for (let i = 0; i < ages.length; i++) {
for (let j = 0; j < uniqueAges.length; j++) {
if (ages[i] == uniqueAges[j]) {
found = true;
}
}
count++;
if (count == 1 && found == false) {
uniqueAges.push(ages[i]);
}
count = 0;
found = false;
}
return uniqueAges;
}
Insert cell
ages01()
Insert cell
function ages2() {
var ages = [10, 20, 25, 33, 35, 25, 13, 26, 13, 20, 62, 33];
var unique = [];
for (let i = 0; i < ages.length; i++) {
if (unique.indexOf(ages[i]) >= -1) {
unique.push(ages[i]);
}
}
}
Insert cell
ages2()
Insert cell
Insert cell
function sortByName() {
var ar = persons.sort(function(a, b) {
var i = a.lastname.toLowerCase();
var j = b.lastname.toLowerCase();

if (i < j) return -1;
else if (j > j) return 1;
else {
var k = a.firstname.toLowerCase();
var l = a.firstname.toLowerCase();
if (i < j) {
return -1;
} else if (i > j) {
return 1;
}
}
return 0;
});
return ar;
}
Insert cell
function sortByName2(arr) {
return arr.sort((a, b) => {
return a.lastname < b.lastname || a.firstname < b.firstname;
});
}
Insert cell
sortByName()
Insert cell
sortByName2(persons)
Insert cell
Insert cell
function firstnames(persons) {
return persons.map(function(names) {
return names.firstname;
});
}
Insert cell
firstnames(persons)
Insert cell
Insert cell
function ageCalc(age = 18) {
const nowYear = new Date().getFullYear();
return persons.filter(person => {
const birthdayYear = new Date(person.birthday).getFullYear();
return nowYear - birthdayYear >= age;
});
}
Insert cell
ageCalc(25)
Insert cell
Insert cell
function countriesWithPersons() {
const countriesCopy = JSON.parse(JSON.stringify(countries));

return countriesCopy.map(country => {
country.persons = persons.filter(person => {
return person.residence === country.residence;
});

return country;
});
}
Insert cell
countriesWithPersons()
Insert cell
countries
Insert cell
function personsGroup() {
// for (let country in countries) {
// countries[country].persons = [];
// }
countries.forEach(country => {
country.persons = [];
});

for (let person in persons) {
for (let country in countries) {
if (persons[person].residence === countries[country].residence) {
countries[country].persons.push(persons[person]);
}
}
}
// 1. Alle Countries durchgehen
// 2. Pro Country alle Personen finden
// 3. Gefunden Personen in Country speichern

return countries;
}
Insert cell
country = {
// countries as a hashmap

return {
10041: {
city: "Zurich"
},
10042: {
city: "Bern"
},
10043: {
city: "Basel"
}
};
}
Insert cell
country[10041]
Insert cell
function arr() {
var numbers = [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100
];

numbers.forEach(n => {
return n % 2 === 0;
});
}
Insert cell
arr()
Insert cell
function generateArray() {
let number = [];
let counter = 0;
for (let i = 0; i < 100; i++) {
counter++;

number[i] = counter;
}
return number;
}
Insert cell
generateArray()
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more