|
1 | 1 | // Path: src/03-array/02-adding-removing-elements.js |
2 | 2 |
|
3 | 3 | // @ts-ignore |
4 | | -let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
| 4 | +let raffleTickets = [5, 6, 7, 8, 9]; |
5 | 5 |
|
6 | | -numbers[numbers.length] = 10; |
| 6 | +raffleTickets[raffleTickets.length] = 10; |
7 | 7 |
|
8 | 8 | // using push method |
9 | | -numbers.push(11); |
10 | | -numbers.push(12, 13); |
| 9 | +raffleTickets.push(11); |
| 10 | +console.log(raffleTickets.push(12, 13)); // 9 |
| 11 | + |
| 12 | +console.log('raffleTickets: ', raffleTickets); // raffleTickets: [ 5, 6, 7, 8, 9, 10, 11, 12, 13 ] |
11 | 13 |
|
12 | 14 | // 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]; |
| 15 | +const insertAtBeginning = function (array, value) { |
| 16 | + for (let i = array.length; i >= 0; i--) { |
| 17 | + array[i] = array[i - 1]; |
17 | 18 | } |
18 | | - this[0] = value; |
| 19 | + array[0] = value; |
| 20 | + return array; |
19 | 21 | }; |
20 | | -// @ts-ignore |
21 | | -numbers.insertAtBeginning(-1); |
| 22 | +raffleTickets = insertAtBeginning(raffleTickets, 4); |
| 23 | +console.log('raffleTickets: ', raffleTickets); // raffleTickets: [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] |
22 | 24 |
|
23 | 25 | // using unshift method |
24 | | -numbers.unshift(-2); |
25 | | -numbers.unshift(-4, -3); |
| 26 | +raffleTickets.unshift(3); |
| 27 | +raffleTickets.unshift(0, 1, 2); |
| 28 | + |
| 29 | +console.log('raffleTickets: ', raffleTickets); // raffleTickets: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] |
26 | 30 |
|
27 | 31 | // 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 |
| 32 | +let winningTicket = raffleTickets.pop(); |
| 33 | +console.log('The winning ticket is:', winningTicket); // The winning ticket is: 13 |
| 34 | + |
| 35 | +console.log('raffleTickets: ', raffleTickets); // raffleTickets: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ] |
| 36 | +console.log('array length: ', raffleTickets.length); // array length: 13 |
31 | 37 |
|
32 | 38 | // removing elements from the beginning |
33 | | -for (let i = 0; i < numbers.length; i++) { |
| 39 | +for (let i = 0; i < raffleTickets.length; i++) { |
34 | 40 | // numbers[i] = numbers[i + 1]; |
35 | 41 | } |
36 | 42 |
|
37 | 43 | // 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 | | - } |
| 44 | +const removeFirstElement = function(array) { |
| 45 | + for (let i = 1; i < array.length; i++) { |
| 46 | + array[i - 1] = array[i]; |
45 | 47 | } |
46 | | - return newArray; |
| 48 | + array.length--; |
| 49 | + return array; |
47 | 50 | } |
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]; |
| 51 | + |
| 52 | +// Apply to our raffleTickets array |
| 53 | +raffleTickets = removeFirstElement(raffleTickets); |
| 54 | +console.log('Updated raffleTickets:', raffleTickets); // Updated raffleTickets: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ] |
| 55 | +console.log('array length: ', raffleTickets.length); // array length: 12 |
| 56 | + |
| 57 | +// alternative way to remove elements from the beginning using a new array |
| 58 | +const removeFirstElementWithNewArray = function(array) { |
| 59 | + let newArray = []; |
| 60 | + for (let i = 1; i < array.length; i++) { |
| 61 | + newArray.push(array[i]); |
53 | 62 | } |
54 | | - // @ts-ignore |
55 | | - return this.reIndex(this); |
56 | | -}; |
57 | | -// @ts-ignore |
58 | | -// numbers = numbers.removeFromBeginning(); |
| 63 | + return newArray; |
| 64 | +} |
59 | 65 |
|
60 | 66 | // using shift method |
61 | | -numbers.shift(); |
62 | | -console.log('numbers after shift: ', numbers); |
63 | | -console.log('array length: ', numbers.length); // array length: 16 |
| 67 | +raffleTickets.shift(); |
| 68 | +console.log('numbers after shift: ', raffleTickets); // numbers after shift: [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ] |
| 69 | +console.log('array length: ', raffleTickets.length); // array length: 11 |
64 | 70 |
|
65 | 71 | // 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 ] |
| 72 | +// using the splice method to remove elements |
| 73 | +const prizeWinners = raffleTickets.splice(5, 3); // removes 3 elements starting from the 5th position |
| 74 | +console.log('prizeWinners: ', prizeWinners); // prizeWinners: [ 7, 8, 9 ] |
| 75 | +console.log('remaing tickets: ', raffleTickets); // remaing tickets: [ 2, 3, 4, 5, 6, 10, 11, 12 ] |
69 | 76 |
|
70 | | -// adding elements, 2, 3 and 4 at the 5th position |
71 | | -numbers.splice(5, 0, 2, 3, 4); |
| 77 | +// adding number 8 and 9 back to the array |
| 78 | +raffleTickets.splice(5, 0, 8, 9); // adds 8, 9 back to the array |
| 79 | +console.log('raffleTickets: ', raffleTickets); // raffleTickets: [ 2, 3, 4, 5, 6, 8, 9, 10, 11, 12 ] |
72 | 80 |
|
73 | 81 | // to see the output of this file use the command: node src/03-array/02-adding-removing-elements.js |
0 commit comments