-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavascript-basic-notes.js
More file actions
277 lines (221 loc) · 6.29 KB
/
Copy pathjavascript-basic-notes.js
File metadata and controls
277 lines (221 loc) · 6.29 KB
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
// Comment Formatting
/**
* Basic
* ? Blue
* * Light Green
* TODO Orange
* ! Red
*/
// #region Array Methods
// ! METHODS
let arrayMethods = ['March', 'Jan', 'Feb', 'Dec'];
let arrayMethodsNum = [1,2,3,4];
// * SORT
arrayMethods.sort();
// * REVERSE
arrayMethods.reverse();
// * REVERSE SORT
arrayMethods.sort().reverse();
// * INCLUDES
arrayMethods.includes('valueToCheck');
// * EVERY
arrayMethods.every(item => item < 40);
// * REDUCE
// * The "0" is the initial value
const sumWithInitialValue = arrayMethodsNum.reduce(
(previousValue, currentValue) => previousValue + currentValue, 0
);
// #endregion
// #region Functions
// ! FUNCTIONS
// * Default Parameter Value
function greeting(name = 'stranger') {
return `Hello ${name}`;
}
// #endregion
// #region Function Expressions
// ! FUNCTION EXPRESSION
// * Create the function
const functionExpressionTest = function(para1, para2) {
return para1 + para2;
}
// * Call the function
functionExpressionTest(1,2);
// * Arrow Function - shorthand way to write
const functionExpressionTestShortHand = (para1, para2) => {
return para1 + para2;
}
// * Assign Function to Variable
const short = functionExpressionTestShortHand;
// * Call Function assigned to variable
short();
// * Return name of Function assigned to variable
short.name;
// * Calling a function within a higher-order function (callback function)
const higherOrderFunc = param => {
param(); // Call the input parameter here
return `I just invoked ${param.name} as a callback function`;
}
const anotherHighOrderFunc = () => {
return `I'm being invoked by the higher order function`;
}
higherOrderFunc(anotherHighOrderFunc);
// #endregion
// #region Iterators
const iteratorArray = ['mango', 'papaya', 'pineapple', 'apple'];
const iteratorNumArray = [1,2,3,4];
// * FOR EACH
iteratorArray.forEach(function(arrayItem) {
console.log(arrayItem);
});
// * FOR EACH, ARROW FUNCTION
iteratorArray.forEach(arrayItem => console.log(arrayItem));
// * FOR EACH, PRIOR FUNCTION DECLARATION
function printItem(element) {
console.log(element);
}
iteratorArray.forEach(printItem);
// * MAP, copies Array to a new Array. Returns a new array
const newMapArray = iteratorArray.map(x => x);
// * MAP alternative
const newMapArray2 = iteratorArray.map(valuee => {
return valuee;
});
// * MAP IF ELSE, ternary operator return statement
const newMapArray3 = iteratorArray.map(value => {
return value === 'apple' ? 'Windows' : value;
});
// * FILTER, returns a new array base on the applied filter
const filterShortWords = iteratorArray.filter(word => {
return word.length > 5;
// Returns an array of words with a length greater than 5
});
// * FILTER, short hand
const filterShortWordsShort = iteratorArray.filter(word => word.length > 5);
// * FIND INDEX, returns the index of the first value to evaluate to true
const findIndexOfValue = (item) => item === 'apple';
console.log(iteratorArray.findIndex(findIndexOfValue));
// * FIND INDEX alternative
function findMyKeys(input) {
return input.findIndex(word => word.includes('keys'));
}
// * REDUCE
const initialValue = 0;
const reduceSumArray = iteratorNumArray.reduce(
(previousValue, currentValue) => previousValue + currentValue, initialValue
);
// #endregion
// #region Object Literals
// ! OBJECT LITERALS
// * Created with {}
// * Filled with key : value pairs
let objectLiteralTest = {
color: silver,
'Fuel Type': 'diesel',
activate() {
// Do the thing
},
engine: {
computer: {
RAM: '4gb'
},
'back-up': {
battery: 'Lithium',
terabytes: 50
}
}
};
// * Access property of object
objectLiteralTest.color; // Returns value of color
// * Bracket Notation for access
objectLiteralTest['color']; // Returns value of color
// * Change key value
objectLiteralTest.color = 'red';
// * Add key value
objectLiteralTest.size = 'large';
// * Delete key value pair
delete objectLiteralTest.size;
// * Object Method : a function that's part of an object
objectLiteralTest.activate();
// * Accessing Nested Objects
objectLiteralTest.engine['back-up'].battery; // Returns 'Lithium'
// #endregion
// #region Objects Adv
// ! THIS
// * Used to access the calling object's properties
const goat = {
dietType: 'herbivore',
diet() {
return this.dietType;
}
}
// ! GETTERS SETTERS
// * Used to get object properties
// * Use a function as a key in the object
const robot = {
_model: 100,
get model() {
return this._model;
},
set model(input) {
this._model = input;
}
}
// * Call the setter method
robot.model = '120';
// ! SORT ARRAY OF OBJECTS BY OBJECT VALUE
const speciesArray = [
{speciesName:'shark', numTeeth:50},
{speciesName:'dog', numTeeth:42},
{speciesName:'alligator', numTeeth:80},
{speciesName:'human', numTeeth:32}
];
const sortSpeciesByTeeth = arr => arr.sort((speciesObj1, speciesObj2) => speciesObj1.numTeeth > speciesObj2.numTeeth)
sortSpeciesByTeeth(speciesArray);
// #endregion
// #region Classes
// ! CONSTRUCTOR
class Dog {
// * Constructor creates a new instance of a class
// * Methods are same as an object but no comma
constructor(name) {
this._name = name;
this._behavior = 0;
}
get name() {
return this._name;
}
// * Static methods can not be accessed by child classes
// * Static methods can only be called by the class, not by instances
// * Ex: Dog.generateName();
static generateName() {
const names = ['Joe', 'Mama', 'Bob', 'Uncle'];
const randomName = Math.floor(Math.random()*4);
return names[randomName];
}
}
// ! Extend - inherit from the parent class
class Sheltie extends Dog {
constructor(name, color) {
super(name);
this._color = color;
// * Super calls the constructor in the parent class
// * Call super items before "this" items
}
}
// * Have to include "new" to create a new instance of the class
const halley = new Dog('Halley');
// #endregion
// #region Async Promises
// ! PROMISE CONSTRUCTOR
const executorFunction = (resolve, reject) => {
if (true) {
resolve(`I resolved!`);
} else {
reject(`I rejected`);
}
}
const myFirstPromise = new Promise(executorFunction);
// #endregion
// #region
// #endregion