Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6e1f45e

Browse files
committed
chapter 3: arrays
1 parent 8652345 commit 6e1f45e

30 files changed

+1459
-10
lines changed

‎package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "4.0.0",
44
"description": "Learning JavaScript Data Structures and Algorithms",
55
"scripts": {
6+
"build:ts": "tsc -p tsconfig.json",
67
"test": "echo \"Error: no test specified\" && exit 1"
78
},
89
"author": "Loiane Groner",

‎src/01-intro/08-typescript.js‎

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,42 @@
11
// Path: src/01-intro/08-typescript.ts
2-
var myName = 'Packt';
2+
let myName = 'Packt';
33
// myName = 10; // commented to avoid error
44
/* Type inference */
5-
var age = 20; // number
6-
var existsFlag = true; // boolean
7-
var language = 'JavaScript'; // string
8-
var favoriteLanguage;
9-
var langs = ['JavaScript', 'Ruby', 'Python'];
5+
let age = 20; // number
6+
let existsFlag = true; // boolean
7+
let language = 'JavaScript'; // string
8+
let favoriteLanguage;
9+
let langs = ['JavaScript', 'Ruby', 'Python'];
1010
favoriteLanguage = langs[0];
1111
function printName(person) {
1212
console.log(person.name);
1313
}
14-
var john = { name: 'John', age: 21 };
15-
var mary = { name: 'Mary', age: 21, phone: '123-45678' };
14+
const john = { name: 'John', age: 21 };
15+
const mary = { name: 'Mary', age: 21, phone: '123-45678' };
1616
printName(john);
1717
printName(mary);
18+
class MyObject {
19+
age;
20+
constructor(age) {
21+
this.age = age;
22+
}
23+
compareTo(b) {
24+
if (this.age === b.age) {
25+
return 0;
26+
}
27+
return this.age > b.age ? 1 : -1;
28+
}
29+
}
30+
/* Enums */
31+
var Compare;
32+
(function (Compare) {
33+
Compare[Compare["LESS_THAN"] = -1] = "LESS_THAN";
34+
Compare[Compare["BIGGER_THAN"] = 1] = "BIGGER_THAN";
35+
Compare[Compare["EQUALS"] = 0] = "EQUALS";
36+
})(Compare || (Compare = {}));
37+
function compareTo(a, b) {
38+
if (a.age === b.age) {
39+
return Compare.EQUALS;
40+
}
41+
return a.age > b.age ? Compare.BIGGER_THAN : Compare.LESS_THAN;
42+
}

‎src/01-intro/08-typescript.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ let langs = ['JavaScript', 'Ruby', 'Python'];
1313
favoriteLanguage = langs[0];
1414

1515
/* Interfaces as type */
16-
interface Person {
16+
interface Friend {
1717
name: string;
1818
age: number;
1919
}
2020

21-
function printName(person: Person) {
21+
function printName(person: Friend) {
2222
console.log(person.name);
2323
}
2424

‎src/03-array/01-arrays.js‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Path: src/03-array/01-arrays.js
2+
3+
/* Arrays Intro */
4+
const averageTempJan = 12;
5+
const averageTempFeb = 15;
6+
const averageTempMar = 18;
7+
const averageTempApr = 20;
8+
const averageTempMay = 25;
9+
10+
const averageTemp = [12, 15, 18, 20, 25];
11+
// or
12+
averageTemp[0] = 12;
13+
averageTemp[1] = 15;
14+
averageTemp[2] = 18;
15+
averageTemp[3] = 20;
16+
averageTemp[4] = 25;
17+
18+
console.log('averageTempJan', averageTempJan);
19+
console.log('averageTempFeb', averageTempFeb);
20+
console.log('averageTempMar', averageTempMar);
21+
console.log('averageTempApr', averageTempApr);
22+
console.log('averageTempMay', averageTempMay);
23+
24+
console.log('averageTemp[0]', averageTemp[0]);
25+
console.log('averageTemp[1]', averageTemp[1]);
26+
console.log('averageTemp[2]', averageTemp[2]);
27+
console.log('averageTemp[3]', averageTemp[3]);
28+
console.log('averageTemp[4]', averageTemp[4]);
29+
30+
/* Creating and initializing arrays */
31+
let daysOfWeek = new Array(); // {1}
32+
daysOfWeek = new Array(7); // {2}
33+
daysOfWeek = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); // {3}
34+
35+
// preferred
36+
daysOfWeek = []; // {4}
37+
daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; // {5}
38+
39+
console.log('daysOfWeek.length', daysOfWeek.length); // output: 7
40+
41+
for (let i = 0; i < daysOfWeek.length; i++) {
42+
console.log(`daysOfWeek[${i}]`, daysOfWeek[i]);
43+
}
44+
45+
/* fibonacci numbers */
46+
// Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
47+
const fibonacci = []; // {1}
48+
fibonacci[1] = 1; // {2}
49+
fibonacci[2] = 1; // {3}
50+
51+
// create the fibonacci sequence starting from the 3rd element
52+
for (let i = 3; i < 20; i++) {
53+
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]; // //{4}
54+
}
55+
56+
// display the fibonacci sequence
57+
for (let i = 1; i < fibonacci.length; i++) { // {5}
58+
console.log(`fibonacci[${i}]`, fibonacci[i]); // {6}
59+
}
60+
61+
// instead of {5} and {6} we can use
62+
console.log('fibonacci', fibonacci);
63+
64+
// Using the for..in loop
65+
for (const i in fibonacci) {
66+
console.log(`fibonacci[${i}]`, fibonacci[i]);
67+
}
68+
69+
// Using the for..of loop
70+
for (const value of fibonacci) {
71+
console.log('value', value);
72+
}
73+
74+
// to see the output of this file use the command: node src/03-array/01-arrays.js

‎src/03-array/01-arrays.ts‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Path: src/03-array/01-arrays.ts
2+
3+
/* Arrays Intro */
4+
const averageTempJan = 12;
5+
const averageTempFeb = 15;
6+
const averageTempMar = 18;
7+
const averageTempApr = 20;
8+
const averageTempMay = 25;
9+
10+
const averageTemp = [12, 15, 18, 20, 25];
11+
// or
12+
averageTemp[0] = 12;
13+
averageTemp[1] = 15;
14+
averageTemp[2] = 18;
15+
averageTemp[3] = 20;
16+
averageTemp[4] = 25;
17+
18+
console.log('averageTempJan', averageTempJan);
19+
console.log('averageTempFeb', averageTempFeb);
20+
console.log('averageTempMar', averageTempMar);
21+
console.log('averageTempApr', averageTempApr);
22+
console.log('averageTempMay', averageTempMay);
23+
24+
console.log('averageTemp[0]', averageTemp[0]);
25+
console.log('averageTemp[1]', averageTemp[1]);
26+
console.log('averageTemp[2]', averageTemp[2]);
27+
console.log('averageTemp[3]', averageTemp[3]);
28+
console.log('averageTemp[4]', averageTemp[4]);
29+
30+
/* Creating and initializing arrays */
31+
let daysOfWeek = new Array(); // {1}
32+
daysOfWeek = new Array(7); // {2}
33+
daysOfWeek = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); // {3}
34+
35+
// preferred
36+
daysOfWeek = []; // {4}
37+
daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; // {5}
38+
39+
console.log('daysOfWeek.length', daysOfWeek.length); // output: 7
40+
41+
for (let i = 0; i < daysOfWeek.length; i++) {
42+
console.log(`daysOfWeek[${i}]`, daysOfWeek[i]);
43+
}
44+
45+
/* fibonacci numbers */
46+
// Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
47+
const fibonacci = []; // {1}
48+
fibonacci[1] = 1; // {2}
49+
fibonacci[2] = 1; // {3}
50+
51+
// create the fibonacci sequence starting from the 3rd element
52+
for (let i = 3; i < 20; i++) {
53+
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]; // //{4}
54+
}
55+
56+
// display the fibonacci sequence
57+
for (let i = 1; i < fibonacci.length; i++) { // {5}
58+
console.log(`fibonacci[${i}]`, fibonacci[i]); // {6}
59+
}
60+
61+
// instead of {5} and {6} we can use
62+
console.log('fibonacci', fibonacci);
63+
64+
// Using the for..in loop
65+
for (const i in fibonacci) {
66+
console.log(`fibonacci[${i}]`, fibonacci[i]);
67+
}
68+
69+
// Using the for..of loop
70+
for (const value of fibonacci) {
71+
console.log('value', value);
72+
}
73+
74+
// to see the output of this file use the command: node src/03-array/01-arrays.ts
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// Path: src/03-array/02-adding-removing-elements.js
2+
3+
// @ts-ignore
4+
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
5+
6+
numbers[numbers.length] = 10;
7+
8+
// using push method
9+
numbers.push(11);
10+
numbers.push(12, 13);
11+
12+
// inserting elements at the beginning
13+
// @ts-ignore
14+
Array.prototype.insertAtBeginning = function (value) {
15+
for (let i = this.length; i >= 0; i--) {
16+
this[i] = this[i - 1];
17+
}
18+
this[0] = value;
19+
};
20+
// @ts-ignore
21+
numbers.insertAtBeginning(-1);
22+
23+
// using unshift method
24+
numbers.unshift(-2);
25+
numbers.unshift(-4, -3);
26+
27+
// removing elements from the end
28+
numbers.pop(); // number 13 is removed
29+
// console.log('Removed element: ', numbers.pop()); // Removed element: 13
30+
console.log('array length: ', numbers.length); // array length: 17
31+
32+
// removing elements from the beginning
33+
for (let i = 0; i < numbers.length; i++) {
34+
// numbers[i] = numbers[i + 1];
35+
}
36+
37+
// removing elements from the beginning - educational purposes only
38+
// @ts-ignore
39+
Array.prototype.reIndex = function (myArray) {
40+
const newArray = [];
41+
for (let i = 0; i < myArray.length; i++) {
42+
if (myArray[i] !== undefined) {
43+
newArray.push(myArray[i]);
44+
}
45+
}
46+
return newArray;
47+
}
48+
// remove first position manually and reIndex
49+
// @ts-ignore
50+
Array.prototype.removeFromBeginning = function () {
51+
for (let i = 0; i < this.length; i++) {
52+
this[i] = this[i + 1];
53+
}
54+
// @ts-ignore
55+
return this.reIndex(this);
56+
};
57+
// @ts-ignore
58+
// numbers = numbers.removeFromBeginning();
59+
60+
// using shift method
61+
numbers.shift();
62+
console.log('numbers after shift: ', numbers);
63+
console.log('array length: ', numbers.length); // array length: 16
64+
65+
// adding and removing elements from a specific position
66+
// using the splice method
67+
numbers.splice(5, 3); // removes 3 elements starting from the 5th position
68+
console.log('numbers: ', numbers); // numbers: [ -3, -2, -1, 0, 1, 5, 6, 7, 8, 9, 10, 11, 12 ]
69+
70+
// adding elements, 2, 3 and 4 at the 5th position
71+
numbers.splice(5, 0, 2, 3, 4);
72+
73+
// to see the output of this file use the command: node src/03-array/02-adding-removing-elements.js
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// Path: src/03-array/02-adding-removing-elements.ts
2+
3+
// @ts-ignore
4+
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
5+
6+
numbers[numbers.length] = 10;
7+
8+
// using push method
9+
numbers.push(11);
10+
numbers.push(12, 13);
11+
12+
// inserting elements at the beginning
13+
// @ts-ignore
14+
Array.prototype.insertAtBeginning = function (value) {
15+
for (let i = this.length; i >= 0; i--) {
16+
this[i] = this[i - 1];
17+
}
18+
this[0] = value;
19+
};
20+
// @ts-ignore
21+
numbers.insertAtBeginning(-1);
22+
23+
// using unshift method
24+
numbers.unshift(-2);
25+
numbers.unshift(-4, -3);
26+
27+
// removing elements from the end
28+
numbers.pop(); // number 13 is removed
29+
// console.log('Removed element: ', numbers.pop()); // Removed element: 13
30+
console.log('array length: ', numbers.length); // array length: 17
31+
32+
// removing elements from the beginning
33+
for (let i = 0; i < numbers.length; i++) {
34+
// numbers[i] = numbers[i + 1];
35+
}
36+
37+
// removing elements from the beginning - educational purposes only
38+
// @ts-ignore
39+
Array.prototype.reIndex = function (myArray) {
40+
const newArray = [];
41+
for (let i = 0; i < myArray.length; i++) {
42+
if (myArray[i] !== undefined) {
43+
newArray.push(myArray[i]);
44+
}
45+
}
46+
return newArray;
47+
}
48+
// remove first position manually and reIndex
49+
// @ts-ignore
50+
Array.prototype.removeFromBeginning = function () {
51+
for (let i = 0; i < this.length; i++) {
52+
this[i] = this[i + 1];
53+
}
54+
// @ts-ignore
55+
return this.reIndex(this);
56+
};
57+
// @ts-ignore
58+
// numbers = numbers.removeFromBeginning();
59+
60+
// using shift method
61+
numbers.shift();
62+
console.log('numbers after shift: ', numbers);
63+
console.log('array length: ', numbers.length); // array length: 16
64+
65+
// adding and removing elements from a specific position
66+
// using the splice method
67+
numbers.splice(5, 3); // removes 3 elements starting from the 5th position
68+
console.log('numbers: ', numbers); // numbers: [ -3, -2, -1, 0, 1, 5, 6, 7, 8, 9, 10, 11, 12 ]
69+
70+
// adding elements, 2, 3 and 4 at the 5th position
71+
numbers.splice(5, 0, 2, 3, 4);
72+
73+
// to see the output of this file use the command: node src/03-array/02-adding-removing-elements.ts

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /