https://github.com/loiane/javascript-datastructures-algorithms/
Meu resumo e Código fonte do livro Javascript Estrutura de Dados e Algoritmos Ed. 2.
Repositorio Oficcial - Loiane G. original do livro
- Capítulo 01 JavaScript – uma visão geral rápida
- Capítulo 02 Visão geral sobre ECMAScript e TypeScript
- Capítulo 03 Arrays
- Capítulo 04 Pilhas
- Capítulo 05 Filas e deques
- Capítulo 06 Listas ligadas
- Capítulo 07 Conjuntos
- Capítulo 08 Dicionários e hashes
- Capítulo 09 Recursão
- Capítulo 10 Árvores
- Capítulo 11 Heap binário e heap sort
- Capítulo 12 Grafos
- Capítulo 13 Algoritmos de ordenação e de busca
- Capítulo 14 Designs de algoritmos e técnicas
- Capítulo 15 Complexidade de algoritmos
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01</title>
</head>
<body>
<script type="text/javascript" src="01-helloWorld.js"></script>
<script type="text/javascript">
// alert('Hello, World!');
// console.log('Hello, World!');
</script>
</body>
</html>
function output(t) {
document.write('<h1>' + t + '</h1>');
}
alert('Hello, World!');
console.log('Hello, World!');
output('Hello, World!');
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02</title>
</head>
<body>
<script type="text/javascript" src="02-Variables.js"></script>
</body>
</html>
var num = 1; // {1}
num = 3; // {2}
var price = 1.5; // {3}
var myName = 'Packt'; // {4}
var trueValue = true; // {5}
var nullVar = null; // {6}
var und; // {7}
console.log('num: ' + num);
console.log('myName: ' + myName);
console.log('trueValue: ' + trueValue);
console.log('price: ' + price);
console.log('nullVar: ' + nullVar);
console.log('und: ' + und);
// ******* Variable Scope
var myVariable = 'global';
myOtherVariable = 'global';
function myFunction() {
var myVariable = 'local';
return myVariable;
}
function myOtherFunction() {
myOtherVariable = 'local';
return myOtherVariable;
}
console.log(myVariable); //{1}
console.log(myFunction()); //{2}
console.log(myOtherVariable); //{3}
console.log(myOtherFunction()); //{4}
console.log(myOtherVariable); //{5}
/* Arithmetic operators */
var num = 0; // {1}
console.log('num value is ' + num);
num = num + 2;
console.log('New num value is ' + num);
num = num * 3;
console.log('New num value is ' + num);
num = num / 2;
console.log('New num value is ' + num);
num++;
num--;
console.log('New num value is ' + num);
console.log('num mod 2 value is ' + num % 2);
/* Assignment operators */
num += 1;
num -= 2;
num *= 3;
num /= 2;
num %= 3;
console.log('New num value is ' + num);
/* Assignment operators */
console.log('num == 1 : ' + (num == 1));
console.log('num === 1 : ' + (num === 1));
console.log('num != 1 : ' + (num != 1));
console.log('num > 1 : ' + (num > 1));
console.log('num < 1 : ' + (num < 1));
console.log('num >= 1 : ' + (num >= 1));
console.log('num <= 1 : ' + (num <= 1));
/* Logical operators */
console.log('true && false : ' + (true && false)); // false
console.log('true || false : ' + (true || false)); // true
console.log('!true : ' + !true); // false
/* Bitwise operators */
console.log('5 & 1:', 5 & 1); // same as 0101 & 0001 (result 0001 / 1)
console.log('5 | 1:', 5 | 1); // same as 0101 | 0001 (result 0101 / 5)
console.log('~ 5:', ~5); // same as ~0101 (result 1010 / 10)
console.log('5 ^ 1:', 5 ^ 1); // same as 0101 ^ 0001 (result 0100 / 4)
console.log('5 << 1:', 5 << 1); // same as 0101 << 1 (result 1010 / 10)
console.log('5 >> 1:', 5 >> 1); // same as 0101 >> 1 (result 0010 / 2)
/* typeOf */
console.log('typeof num:', typeof num);
console.log('typeof Packt:', typeof 'Packt');
console.log('typeof true:', typeof true);
console.log('typeof [1,2,3]:', typeof [1, 2, 3]);
console.log('typeof {name:John}:', typeof { name: 'John' });
/* delete */
var myObj = { name: 'John', age: 21 };
delete myObj.age;
console.log(myObj); // Object {name: "John"}
function testTruthy(val) {
return val ? console.log('truthy') : console.log('falsy');
}
testTruthy(true); // true
testTruthy(false); // false
testTruthy(new Boolean(false)); // true (object is always true)
testTruthy(''); // false
testTruthy('a'); // true
testTruthy('Packt'); // true
testTruthy(new String('')); // true (object is always true)
testTruthy(1); // true
testTruthy(-1); // true
testTruthy(NaN); // false
testTruthy(new Number(NaN)); // true (object is always true)
testTruthy({}); // true (object is always true)
var obj = { name: 'John' };
testTruthy(obj); // true
testTruthy(obj.name); // true
testTruthy(obj.age); // false (property age does not exist)
// Packt == true
console.log('packt' ? true : false);
// outputs true
console.log('packt' == true);
// 1 - converts Boolean using toNumber
// 'packt' == 1
// 2 - converts String using toNumber
// NaN == 1
// outputs false
console.log('packt' == false);
// 1 - converts Boolean using toNumber
// 'packt' == 0
// 2 - converts String using toNumber
// NaN == 0
// outputs false
console.log([0] == true);
// 1 - converts Boolean using toNumber
// [0] == 1
// 2 - converts Object using toPrimitive
// 2.1 - [0].valueOf() is not primitive
// 2.2 - [0].toString is 0
// 0 == 1
// outputs false
//* ****************************** ===
console.log('packt' === true); // false
console.log('packt' === 'packt'); // true
var person1 = { name: 'John' };
var person2 = { name: 'John' };
console.log(person1 === person2); // false, different objects