5.2_exercise
This commit is contained in:
22
w5_2_FP/data.js
Normal file
22
w5_2_FP/data.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
export const data = [
|
||||||
|
{ name: 'tom', last: 'hanks' },
|
||||||
|
{ name: 'meryl', last: 'streep' },
|
||||||
|
{ name: 'leonardo', last: 'dicaprio' },
|
||||||
|
{ name: 'scarlett', last: 'johansson' },
|
||||||
|
{ name: 'brad', last: 'pitt' },
|
||||||
|
{ name: 'angelina', last: 'jolie' },
|
||||||
|
{ name: 'denzel', last: 'washington' },
|
||||||
|
{ name: 'jennifer', last: 'lawrence' },
|
||||||
|
{ name: 'robert', last: 'downey jr.' },
|
||||||
|
{ name: 'natalie', last: 'portman' },
|
||||||
|
{ name: 'morgan', last: 'freeman' },
|
||||||
|
{ name: 'emma', last: 'stone' },
|
||||||
|
{ name: 'johnny', last: 'depp' },
|
||||||
|
{ name: 'anne', last: 'hathaway' },
|
||||||
|
{ name: 'will', last: 'smith' },
|
||||||
|
{ name: 'charlize', last: 'theron' },
|
||||||
|
{ name: 'matt', last: 'damon' },
|
||||||
|
{ name: 'julia', last: 'roberts' },
|
||||||
|
{ name: 'christian', last: 'bale' },
|
||||||
|
{ name: 'cate', last: 'blanchett' },
|
||||||
|
];
|
||||||
22
w5_2_FP/index.html
Normal file
22
w5_2_FP/index.html
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./style.css" />
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<ul id="list">
|
||||||
|
<li><span class="blue">Christian</span> <span class="pink">BALE</span></li>
|
||||||
|
<li><span class="blue">Cate</span> <span class="pink">BLANCHETT</span></li>
|
||||||
|
<!-- ... -->
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script defer type="module" src="solution-index.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
35
w5_2_FP/index.js
Normal file
35
w5_2_FP/index.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import { data } from './data.js';
|
||||||
|
|
||||||
|
// Utility function to compose functions
|
||||||
|
const pipe =
|
||||||
|
(...fns) =>
|
||||||
|
(x) =>
|
||||||
|
fns.reduce((v, f) => f(v), x);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Given
|
||||||
|
{ name: 'tom', last: 'hanks' },
|
||||||
|
transform it to
|
||||||
|
<li><span class="blue">Tom</span> <span class="pink">HANKS</span></li>
|
||||||
|
|
||||||
|
Sort all the actors by their lastname.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Transfor the following code with loops to use functional programming style
|
||||||
|
|
||||||
|
// Sort by lastname
|
||||||
|
data.sort((a, b) => a.last.localeCompare(b.last));
|
||||||
|
|
||||||
|
// Create HTML list items
|
||||||
|
let html = '';
|
||||||
|
|
||||||
|
// For each actor
|
||||||
|
for (const actor of data) {
|
||||||
|
const name = actor.name[0].toUpperCase() + actor.name.slice(1);
|
||||||
|
const last = actor.last.toUpperCase();
|
||||||
|
|
||||||
|
html += `<li><span class="blue">${name}</span> <span class="pink">${last}</span></li>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the innerHTML of the list element to the generated HTML
|
||||||
|
document.getElementById('list').innerHTML = html;
|
||||||
21
w5_2_FP/style.css
Normal file
21
w5_2_FP/style.css
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
body {
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style: circle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blue {
|
||||||
|
color: dodgerblue;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pink {
|
||||||
|
color: fuchsia;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user