Skip to content

Commit 8cf2152

Browse files
committed
chapter 02 - arrays
1 parent 6a4eb60 commit 8cf2152

16 files changed

+407
-281
lines changed

examples/chapter02/01-Introduction.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ averageTemp[2] = 42.4;
1313
averageTemp[3] = 52;
1414
averageTemp[4] = 60.8;
1515

16-
console.log(averageTempJan);
17-
console.log(averageTempFeb);
18-
console.log(averageTempMar);
19-
console.log(averageTempApr);
20-
console.log(averageTempMay);
16+
console.log('averageTempJan', averageTempJan);
17+
console.log('averageTempFeb', averageTempFeb);
18+
console.log('averageTempMar', averageTempMar);
19+
console.log('averageTempApr', averageTempApr);
20+
console.log('averageTempMay', averageTempMay);
2121

22-
console.log(averageTemp[0]);
23-
console.log(averageTemp[1]);
24-
console.log(averageTemp[2]);
25-
console.log(averageTemp[3]);
26-
console.log(averageTemp[4]);
22+
console.log('averageTemp[0]', averageTemp[0]);
23+
console.log('averageTemp[1]', averageTemp[1]);
24+
console.log('averageTemp[2]', averageTemp[2]);
25+
console.log('averageTemp[3]', averageTemp[3]);
26+
console.log('averageTemp[4]', averageTemp[4]);

examples/chapter02/02-CreatingAndInitialingArrays.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,12 @@ daysOfWeek = [];
1212

1313
daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; // {3}
1414

15-
console.log(daysOfWeek.length);
15+
console.log('daysOfWeek.length', daysOfWeek.length);
1616

1717
for (let i = 0; i < daysOfWeek.length; i++) {
18-
console.log(daysOfWeek[i]);
18+
console.log(`daysOfWeek[${i}]`, daysOfWeek[i]);
1919
}
2020

21-
// console.table(daysOfWeek);
22-
2321
// fibonacci numbers
2422
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
2523
const fibonacci = []; // {1}
@@ -31,8 +29,8 @@ for (let i = 3; i < 20; i++) {
3129
}
3230

3331
for (let i = 1; i < fibonacci.length; i++) { // {5}
34-
console.log(fibonacci[i]); // {6}
32+
console.log(`fibonacci[${i}]`, fibonacci[i]); // {6}
3533
}
3634

3735
// instead of {5} and {6} we can simply use
38-
console.log(fibonacci);
36+
console.log('fibonacci', fibonacci);
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,105 @@
11
// @ts-check
2+
/* eslint-disable */
23

3-
const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
4+
function logArray(message = '', array) {
5+
const output = `${message} => (${array.length}) [${array.join(', ')}]`;
6+
document.writeln(`<p>${output}</p>`);
7+
console.log(message, array);
8+
}
9+
10+
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
411

12+
console.log('Original array', numbers);
513

614
function printArray(myArray) {
715
for (let i = 0; i < myArray.length; i++) {
816
console.log(myArray[i]);
917
}
1018
}
1119

20+
/****************************** Inserting an element in the end of the Array */
21+
1222
// add a new element to the numbers array
1323
numbers[numbers.length] = 10;
24+
console.log('Add 10 to the end', numbers);
1425

1526
numbers.push(11);
27+
console.log('Add 11 with push', numbers);
1628

1729
numbers.push(12, 13);
30+
console.log('Add 12 and 13 with push', numbers);
1831

19-
printArray(numbers);
2032

2133
// insert first position manually
22-
for (let i = numbers.length; i >= 0; i--) {
23-
numbers[i] = numbers[i - 1];
24-
}
25-
26-
numbers[0] = -1;
34+
Array.prototype.insertFirstPosition = function(value) {
35+
for (let i = this.length; i >= 0; i--) {
36+
this[i] = this[i - 1];
37+
}
38+
this[0] = value;
39+
};
2740

28-
printArray(numbers);
41+
numbers.insertFirstPosition(-1);
42+
console.log('Add -1 with insertFirstPosition', numbers);
43+
// printArray(numbers);
2944

3045
// using method unshift
3146
numbers.unshift(-2);
32-
33-
printArray(numbers);
47+
console.log('Add -2 with unshift', numbers);
48+
//printArray(numbers);
3449

3550
numbers.unshift(-4, -3);
51+
console.log('Add -4 and -3 with unshift', numbers);
52+
// printArray(numbers);
3653

37-
printArray(numbers);
38-
39-
// **** Removing elements
54+
// ************** Removing elements
4055

4156
numbers.pop();
57+
console.log('Removed last value with pop', numbers);
4258

43-
// remove first position manually
4459
for (let i = 0; i < numbers.length; i++) {
4560
numbers[i] = numbers[i + 1];
4661
}
4762

48-
printArray(numbers);
63+
console.log('Removed first value manually', numbers);
64+
console.log('Lenght after value removed manually', numbers.length);
65+
66+
//reset array
67+
numbers = [-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
4968

50-
console.log(numbers.length);
69+
Array.prototype.reIndex = function(myArray) {
70+
const newArray = [];
71+
for(let i = 0; i < myArray.length; i++ ) {
72+
if (myArray[i] !== undefined) {
73+
// console.log(myArray[i]);
74+
newArray.push(myArray[i]);
75+
}
76+
}
77+
return newArray;
78+
}
79+
80+
// remove first position manually and reIndex
81+
Array.prototype.removeFirstPosition = function() {
82+
for (let i = 0; i < this.length; i++) {
83+
this[i] = this[i + 1];
84+
}
85+
return this.reIndex(this);
86+
};
87+
88+
numbers = numbers.removeFirstPosition();
89+
console.log('Removed first with removeFirstPosition + reIndex', numbers);
5190

5291
// using method shift
5392
numbers.shift();
54-
55-
printArray(numbers);
56-
console.log(numbers.length);
93+
console.log('Removed first with shift', numbers);
94+
console.log('Lenght after removed first with shift', numbers.length);
5795

5896
//* *** Removing and Adding elements from the middle of the array or specific position
5997
// splice method - parameter (index, howManyPositionsToBeRemoved, item1...itemX)
6098
numbers.splice(5, 3);
61-
62-
console.log('----');
63-
64-
printArray(numbers);
99+
console.log('Removing 3 elements (3, 4, 5) starting index 5', numbers);
65100

66101
numbers.splice(5, 0, 2, 3, 4);
67-
68-
console.log('----');
69-
70-
printArray(numbers);
71-
72-
console.log('----');
102+
console.log('Adding 3 elements (2, 3, 4) starting index 5', numbers);
73103

74104
numbers.splice(5, 3, 2, 3, 4);
75-
76-
printArray(numbers);
105+
console.log('Removing 3 elements starting index 5 and adding (2, 3, 4)', numbers);

examples/chapter02/04-TwoDimensionalMultiDimensional.js

+17-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ let averageTemp = [];
88

99
// same as
1010
averageTemp[0] = [72, 75, 79, 79, 81, 81];
11-
averageTemp[1] = [81, 79, 75, 75, 73, 72];
11+
averageTemp[1] = [81, 79, 75, 75, 73, 73];
1212

1313
function printMatrix(myMatrix) {
1414
for (let i = 0; i < myMatrix.length; i++) {
@@ -18,7 +18,8 @@ function printMatrix(myMatrix) {
1818
}
1919
}
2020

21-
printMatrix(averageTemp);
21+
// printMatrix(averageTemp);
22+
console.log('averageTemp two-dimensional array:');
2223

2324
// same as
2425

@@ -37,9 +38,10 @@ averageTemp[1][1] = 79;
3738
averageTemp[1][2] = 75;
3839
averageTemp[1][3] = 75;
3940
averageTemp[1][4] = 73;
40-
averageTemp[1][5] = 72;
41+
averageTemp[1][5] = 73;
4142

42-
printMatrix(averageTemp);
43+
// printMatrix(averageTemp);
44+
console.table(averageTemp);
4345

4446
//* * Multidimensional Matrix
4547

@@ -63,3 +65,14 @@ for (let i = 0; i < matrix3x3x3.length; i++) {
6365
}
6466
}
6567
}
68+
69+
// user-friendly-output
70+
const matrix3x3x3Output = [];
71+
for (let i = 0; i < 3; i++) {
72+
matrix3x3x3Output[i] = [];
73+
for (let j = 0; j < 3; j++) {
74+
matrix3x3x3Output[i][j] = `[${matrix3x3x3[i][j].join(', ')}]`;
75+
}
76+
}
77+
console.log('matrix3x3x3 three-dimensional array:');
78+
console.table(matrix3x3x3Output);

examples/chapter02/05-ArrayMethods.js

+29-105
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,47 @@
11
// @ts-check
22

3-
//* ** contact
4-
var zero = 0;
5-
var positiveNumbers = [1, 2, 3];
6-
var negativeNumbers = [-3, -2, -1];
7-
var numbers = negativeNumbers.concat(zero, positiveNumbers);
8-
9-
console.log(numbers);
10-
11-
// console.log(numbers);
12-
13-
//* ** every and some
14-
var isEven = function(x) {
3+
//* ************** Joining multiple arrays
4+
const zero = 0;
5+
const positiveNumbers = [1, 2, 3];
6+
const negativeNumbers = [-3, -2, -1];
7+
let numbers = negativeNumbers.concat(zero, positiveNumbers);
8+
9+
console.log('zero', zero);
10+
console.log('positiveNumbers', positiveNumbers);
11+
console.log('negativeNumbers', negativeNumbers);
12+
console.log('negativeNumbers.concat(zero, positiveNumbers)', numbers);
13+
14+
/* function isEven(x) {
1515
// returns true if x is a multiple of 2.
1616
console.log(x);
17-
return x % 2 === 0;
18-
};
19-
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
17+
return x % 2 === 0 ? true : false;
18+
} */ // ES5 syntax
19+
const isEven = x => x % 2 === 0;
2020

21-
numbers.every(isEven); // is going to execute the function only once
21+
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
22+
console.log('numbers', numbers);
2223

23-
console.log('---');
24+
// it is going to execute the function only once
25+
console.log('numbers.every(isEven)', numbers.every(isEven));
2426

25-
numbers.some(isEven); // is going to execute the function twice
27+
// is going to execute the function twice
28+
console.log('numbers.some(isEven)', numbers.some(isEven));
2629

27-
numbers.forEach(function(x) {
30+
/* numbers.forEach(function(x) {
2831
console.log(x % 2 == 0);
29-
});
32+
}); */ // ES5 sintax for function below
3033

31-
console.log(numbers.reverse());
34+
numbers.forEach(x => console.log(`numbers.forEach: ${x} % 2 === 0`, x % 2 === 0));
3235

33-
// console.log('*** filter ***');
3436

35-
var evenNumbers = numbers.filter(isEven);
37+
console.log('numbers.map(isEven)', numbers.map(isEven));
3638

37-
// console.log(evenNumbers);
39+
console.log('numbers.filter(isEven)', numbers.filter(isEven));
3840

39-
console.log('*** map ***');
40-
41-
// console.log(numbers.map(isEven));
42-
43-
console.log(
41+
/* console.log('numbers.reduce',
4442
numbers.reduce(function(previous, current, index) {
4543
return previous + current;
4644
})
47-
);
48-
49-
console.log(numbers.sort());
50-
51-
console.log(
52-
numbers.sort(function(a, b) {
53-
return a - b;
54-
})
55-
);
56-
57-
function compare(a, b) {
58-
if (a < b) {
59-
return -1;
60-
}
61-
if (a > b) {
62-
return 1;
63-
}
64-
// a must be equal to b
65-
return 0;
66-
}
67-
68-
console.log(numbers.sort(compare));
69-
70-
// Sorting objects
71-
72-
var friends = [
73-
{ name: 'John', age: 30 },
74-
{ name: 'Ana', age: 20 },
75-
{ name: 'Chris', age: 25 }
76-
];
77-
78-
function comparePerson(a, b) {
79-
if (a.age < b.age) {
80-
return -1;
81-
}
82-
if (a.age > b.age) {
83-
return 1;
84-
}
85-
return 0;
86-
}
87-
88-
console.log(friends.sort(comparePerson));
89-
90-
var names = ['Ana', 'ana', 'john', 'John'];
91-
console.log(names.sort());
92-
93-
console.log(
94-
names.sort(function(a, b) {
95-
if (a.toLowerCase() < b.toLowerCase()) {
96-
return -1;
97-
}
98-
if (a.toLowerCase() > b.toLowerCase()) {
99-
return 1;
100-
}
101-
return 0;
102-
})
103-
);
104-
105-
var names2 = ['Maève', 'Maeve'];
106-
console.log(
107-
names2.sort(function(a, b) {
108-
return a.localeCompare(b);
109-
})
110-
);
111-
112-
//* ** toString
113-
console.log(numbers.toString());
114-
115-
console.log(numbers.indexOf(10));
116-
console.log(numbers.indexOf(100));
117-
118-
numbers.push(10);
119-
console.log(numbers.lastIndexOf(10));
120-
console.log(numbers.lastIndexOf(100));
45+
); */ // ES5 sintax for function below
12146

122-
var numbersString = numbers.join('-');
123-
console.log(numbersString);
47+
console.log('numbers.reduce', numbers.reduce((previous, current) => previous + current));

0 commit comments

Comments
 (0)