<html>
<head>
<title>a2rp</title>
<link rel="stylesheet" href="styles.css">
<script type="text/javascript" src="jQuery_v3.6.0.js"></script>
<script type="text/javascript" src="scripts.js"></script>
</head>
<body>
<div id="container">
<h3>javascript algorithms and data structures</h3>
<hr />
javascript comments
<ul>
<li>//</li>
<li>/**/</li>
<li>/*<br />*/</li>
</ul>
<pre>
<!-- comments -->
// comments
function program_1 () {
console.log("this will be logged");
// console.log("this will be commented");
console.log("this will be logged again");
/* console.log("this will be commented again"); */
/*
console.log("this will also be commented");
*/
}
program_1();
// output:
// this will be logged
// this will be logged again
</pre>
<hr />
javascript consists of 8 different types of data structures
<ul>
<li>undefined</li>
<li>null</li>
<li>boolean</li>
<li>string</li>
<li>symbol</li>
<li>bigint</li>
<li>number</li>
<li>object</li>
</ul>
data is stored in variable with assignment operator<br />
<pre>
// variables
// 8 types: undefined, null, boolean, string, symbol, bigint, number, object
var var_undefined;
console.log(typeof var_undefined); // undefined
var var_null = null;
console.log(typeof var_null); // object
// In JavaScript null is "nothing". It is supposed to be something that doesn't exist.
// Unfortunately, in JavaScript, the data type of null is an object.
// We can consider it a bug in JavaScript that typeof null is an object. It should be null.
var var_boolean = true;
console.log(typeof var_boolean); // boolean
var var_string = "a2rp: an Ashish Ranjan presentation";
var $_var_string = "dollar variable";
console.log(typeof var_string, typeof $_var_string); // string string
var var_bigint1 = 99n;
var var_bigint2 = BigInt(99);
console.log(typeof var_bigint1,typeof var_bigint2); // bigint bigint
var var_number = 22.7;
console.log(typeof var_number); // number
var var_object = new Date();
console.log(typeof var_object); // object
</pre>
<hr />
Assigning the Value of One Variable to Another
<br />
<pre>
// Assigning the Value of One Variable to Another
var variable_1 = 22.7;
var variable_2 = variable_1;
console.log("variable_2 = ",variable_2); // variable_2 = 22.7</pre>
<hr />
case sensitive variables
<br />
<pre>
// javascript case sensitive variables
var small_case_variable = true;
var SMALL_CASE_VARIABLE = false;
console.log(small_case_variable, SMALL_CASE_VARIABLE); // true false
</pre>
<hr />
Differences Between the var and let Keywords
<br />
<pre>
// Differences Between the var and let Keywords
var name = "Ashish";
var name = "Ranjan";
console.log("name:",name); // name: Ranjan
let name1 = "Ashish";
// Cannot redeclare block-scoped variable 'name1'.ts(2451)
// let name1 = "Ranjan"; // Uncaught SyntaxError: Identifier 'name1' has already been declared</pre>
<hr />
Declare a Read-Only Variable with the const Keyword
<br />
<pre>
// Declare a Read-Only Variable with the const Keyword
let mutable_var = 15;
mutable_var = 20;
console.log("mutable_var:",mutable_var); // mutable_var: 20
const readonly_var = 25;
// readonly_var = 30; // Uncaught TypeError: Assignment to constant variable.</pre>
<hr />
add numbers
<br />
<pre>
// add numbers
let number_1 = 20;
let number_2 = 20.12;
let number_3 = number_1 + number_2;
console.log(number_3); // 40.120000000000005
</pre>
<hr />
subtract numbers
<br />
<pre>
// subtratc numbers
let subtract_number_1 = 20;
let subtract_number_2 = 20.12;
const subtract_result = subtract_number_1 - subtract_number_2;
console.log(subtract_result); // -0.120000000000001</pre>
<hr />
multiply numbers
<br />
<pre>
// multiply two numbers
const multiplied_numbers = 12 * 34;
console.log(multiplied_numbers); // 408</pre>
<hr />
divide numbers
<br />
<pre>
// divide numbers
const divide = 23 / 2;
console.log(divide); // 11.5</pre>
<hr />
increment
<br />
<pre>
// icrement
let i = 0, j = 0, k = 0;
console.log(++i,j++,k+=1); // 1 0 1
console.log(i,j,k); // 1 1 1
</pre>
<hr />
decrement
<br />
<pre>
// decrement
let a = 0, b = 0, c = 0;
console.log(--a,b--,c-=1); // -1 0 -1
console.log(a,b,c); // -1 -1 -1</pre>
<hr />
remainder
<br />
<pre>
// remainder
let remainder_num1 = 33;
let remainder_num2 = 10;
console.log(remainder_num1%remainder_num2); // 3</pre>
<hr />
Compound Assignment With Augmented operation
<br />
<pre>
// Compound Assignment With Augmented operation
let compound_assignment_number = 17;
console.log(compound_assignment_number+=7); // 24
console.log(compound_assignment_number-=7); // 17
console.log(compound_assignment_number*=7); // 119
console.log(compound_assignment_number/=7); // 17</pre>
<hr />
escape sequences
<br />
<ul>
<li>\b Backspace</li>
<li>\f Form Feed</li>
<li>\n New Line</li>
<li>\r Carriage Return</li>
<li>\t Horizontal Tabulator</li>
<li>\v Vertical Tabulator</li>
<li>\' Single quote</li>
<li>\" Double quote</li>
<li>\\ Backslash</li>
</ul>
<pre>
// escape sequences
let before_escape_sequence_string = "a2rp: an Ashish Ranjan presentation";
let after_escape_sequence_string = "\ba2r\fp: \nan Ashish R\tanj\van p\'rese\"ntati\\on";
console.log(before_escape_sequence_string);
console.log(after_escape_sequence_string);
// output:
// a2rp: an Ashish Ranjan presentation
// scripts.js:134 a2rp:
// an Ashish R anj an p'rese"ntati\on</pre>
<hr />
concatenating strings with +
<br />
<pre>
// concatenating strings with +
console.log("a2rp: "+"an Ashish Ranjan presentation"); // a2rp: an Ashish Ranjan presentation
let concat_str1 = "a2rp: ";
let concat_str2 = "an Ashish Ranjan presentation";
let concat_str3 = concat_str1 + " - " + concat_str2;
console.log(concat_str3); // a2rp: - an Ashish Ranjan presentation
let concat_result = concat_str1 + concat_str2;
console.log(concat_result); // a2rp: an Ashish Ranjan presentation
concat_result += "plus_equal";
console.log(concat_result); // a2rp: an Ashish Ranjan presentationplus_equal</pre>
<hr />
string length
<br />
<pre>
// string length
let str_length = "a2rp: an Ashish Ranjan presentation";
console.log("length = "+str_length.length); // length = 35</pre>
<hr />
string index
<br />
<pre>
// string index
let str_index = "a2rp: an Ashish Ranjan presentation";
console.log("second char of string =",str_index[1],"fourth char of string =",str_index[3]); // second char of string = 2
fourth char of string = p</pre>
<hr />
immutable string
<br />
<pre>
// immutable string
let immutable_str = "ABCDEF";
immutable_str[0] = '0';
immutable_str[1] = '1';
console.log(immutable_str); // ABCDEF
immutable_str = "123456";
console.log(immutable_str[0]); // 1
console.log("last character is",immutable_str[immutable_str.length-1]); // last character is 6</pre>
<hr />
arrays
<br />
<pre>
// arrays
let array_var = ["a2rp:", "an", "Ashish", "Ranjan", "presentation"];
console.log("array_var: ",array_var);
// output:
// (5) ['a2rp:', 'an', 'Ashish', 'Ranjan', 'presentation']
// 0: "a2rp:"
// 1: "an"
// 2: "Ashish"
// 3: "Ranjan"
// 4: "presentation"
// length: 5
// [[Prototype]]: Array(0)
let nestarray_var = [["a2rp:"], ["an", "Ashish", "Ranjan", "presentation"]];
console.log(nestarray_var);
console.log(nestarray_var[1][0]); // an
// output:
// (2) [Array(1), Array(4)]
// 0: ['a2rp:']
// 1: (4) ['an', 'Ashish', 'Ranjan', 'presentation']
// length: 2
// [[Prototype]]: Array(0)
for (let i=0; i<array_var.length; ++i) { console.log("at place "+(i+1)+" value=",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = an
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
array_var[1] = " the"; for (let i=0; i<array_var.length; ++i) { console.log("at place "+(i+1)+" value=",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
array_var.push([1,2,3]);
for (let i=0; i<array_var.length; ++i) {
console.log(" at place "+(i+1)+" value=",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
// at place 6 value = (3) [1, 2, 3]
console.log(array_var.pop()); // [1, 2, 3]
console.log(array_var.pop()); // presentation
for (let i=0; i<array_var.length; ++i) {
console.log(" at place "+(i+1)+" value=",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
array_var.shift();
console.log(array_var); // (3) ['the', 'Ashish', 'Ranjan']
array_var.shift();
console.log(array_var); // ['Ashish', 'Ranjan']
array_var.unshift(" 1"); console.log(array_var); // ['1', 'Ashish' , 'Ranjan' ] array_var.unshift("2");
console.log(array_var); // ['2', '1' , 'Ashish' , 'Ranjan' ]
</pre>
<hr />
functions
<br />
<pre>
// functions
function test_function(number1,number2=3) {
return number1 + number2;
}
let return_value = test_function(25);
console.log(return_value); // 28</pre>
<hr />
Global Scope and Functions
<br />
Variables which are declared without the <b>let</b> or <b>const</b> keywords are automatically created in the global scope.
<br />
<pre>
// variable scope and functions
function variable_scope_function() {
var variable_scope_number_1 = 12;
variable_scope_number_2 = 23;
console.log(variable_scope_number_1 + variable_scope_number_2);
}
variable_scope_function(); // 35
try {
console.log(variable_scope_number_1);
} catch (error) {
console.log(error.message); // variable_scope_number_1 is not defined
}
console.log(variable_scope_number_2); // 23</pre>
<hr />
global variable vs local variable precedence
<br />
<pre>
// global variable vs local variable precedence
let variable_3 = "outside global variable";
function function_3() {
let variable_3 = "inside local variable";
console.log(variable_3);
}
function_3(); // inside local variable
</pre>
<hr />
array add and remove elements
<br />
<pre>
// array add at last and remove first
let number_array_1 = [1,2,3,4,5,6];
let number2add = 7;
function addlast_removefirst(the_array,number) {
// add element at last
the_array.push(number);
console.log(JSON.stringify(the_array));
// array.splice(index, howmany, item1, ....., itemX)
// index: Required: The position to add/remove items: Negative value defines the position from the end of the array
// howmany: Optional: Number of items to be removed
// item1, ..., itemX: Optional: New elements(s) to be added
the_array.splice(0,1);
console.log("after remove first");
console.log(JSON.stringify(the_array));
// return the_array;
}
addlast_removefirst(number_array_1,number2add);
</pre>
<hr />
boolean values
<br />
<pre>
// boolean values
let boolean_value = false;
console.log("boolean_value:",boolean_value,", its opposite:",!boolean_value); // boolean_value: false , its opposite: true
</pre>
<hr />
boolean to check condition
<br />
<pre>
// boolean conditional
if (boolean_value) {
console.log("boolean value is true");
} else if(!boolean_value) {
console.log("boolean value is false");
}
// output:
// boolean value is false
</pre>
<hr />
comparison with equality operator
<br />
<pre>
// comparison with equality operator
console.log(1==1); // true
console.log(1==2); // false
console.log("1"==1); // true
console.log(1=="1"); // true
</pre>
<hr />
comparison with strict equality operator
<br />
<pre>
// strict equality operator
console.log(1===1); // true
console.log(1==2); // false
console.log("1"===1); // false
console.log(1==="1"); // false
</pre>
<hr />
comparison with not equality operator
<br />
<pre>
// comparison with not equality operator
console.log(1!=2); // true
console.log(1!="1"); // false
console.log(1!='1'); // false
console.log(1!=true); // false
console.log(0!=false); // false
</pre>
<hr />
strictly not equality operator
<br />
<pre>
// strictly not equality operator
console.log(3!==3); // false
console.log(3!=='3'); // true
console.log(4!==3); // true
</pre>
<hr />
switch case
<br />
<pre>
// switch case
for (let i=0; i<9; ++i) {
switch (i) {
case 1:
console.log(i,"one");
break;
case 2:
console.log(i,"two");
break;
case 3:
console.log(i,"three");
break;
case 4:
case 5:
case 6:
console.log(i,"four five six");
break;
case 7:
console.log(i,"seven");
break;
default:
console.log(i,"i,neither one nor two, three, four, five, six or seven... this is default");
}
}
// output:
// 0 'i,neither one nor two, three, four, five, six or seven... this is default'
// 1 'one'
// 2 'two'
// 3 'three'
// 4 'four five six'
// 5 'four five six'
// 6 'four five six'
// 7 'seven'
// 8 'i,neither one nor two, three, four, five, six or seven... this is default'
</pre>
<hr />
returning boolean from functions
<br />
<pre>
// returning boolean from functions
function return_booean(num1,num2) {
return num1 > num2;
}
console.log(return_booean(45,34)); // true
console.log(return_booean(-45,34)); // false
</pre>
objects
<br />
<pre>
// object
const object1 = {
"property_1": "value 1",
2: "value 2",
"property three": "value three",
property_four: "value four"
};
console.log(object1); // {2: 'value 2', property_1: 'value 1', property three: 'value three', property_four: 'value four'}
console.log(JSON.stringify(object1)); // {"2":"value 2","property_1":"value 1","property three":"value three","property_four":"value four"}
</pre>
<hr />
accessing objects
<br />
<pre>
// accessing objects values with properties
let four;
const object2 = {
"prop_one": "value 1",
2: "value 2",
3.3: "three point 3",
four: "value 4",
prop_five: "value 5",
"property space": "value for property space"
};
console.log(object2); // {2: 'value 2', prop_one: 'value 1', 3.3: 'three point 3', four: 'value 4', prop_five: 'value 5', property space: 'value for property space'}
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three","four":"value 4","prop_five":"value 5"}
console.log("object2['prop_one']:",object2["prop_one"]); // object2['prop_one']: value 1
let property_2 = object2[2];
console.log("property_2",property_2); // property_2 value 2
console.log("object2[3.3]",object2[3.3]); // object2[3.3] three point 3
console.log("object2.four",object2.four); // object2.four value 4
console.log("object2.prop_five",object2.prop_five); // object2.prop_five value 5
console.log("object2['property space']",object2["property space"]); // object2['property space'] value for property space
object2["property space"] = "changed value";
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","four":"value 4","prop_five":"value 5","property space":"changed value"}
object2.new_property = "new property added";
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","four":"value 4","prop_five":"value 5","property space":"changed value","new_property":"new property added"}
delete object2.four;
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","prop_five":"value 5","property space":"changed value","new_property":"new property added"}
</pre>
<hr />
traversing and testing objects with properties [hasOwnProperty]
<br />
<pre>
// hasownproperty
for (const key in object2) {
if (object2.hasOwnProperty(key)) {
console.log(`${key}: ${object2[key]}`);
}
}
// output:
// 2: value 2
// prop_one: value 1
// 3.3: three point 3
// prop_five: value 5
// property space: changed value
// new_property: new property added
</pre>
<hr />
manipulating complex objects
<br />
<pre>
const myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
},
{
"artist": "artist new",
"title": "title new",
"release_year": 2022,
"formats": [".wav", ".mp3"],
}
];
console.log("accessing value deep inside array",myMusic[1]["formats"][1]); // accessing value deep inside array .mp3
</pre>
<hr />
accessing nested objects
<br />
<pre>
// accessing nested objects
let object3 = {
"one": {
"oneone_prop": "oneone_value",
"onetwo_prop": "onetwo_value"
},
"two": {
"twoone_prop": {
"twooneone_prop": "twooneone_value",
"twoonetwo_prop": "twoonetwo_value"
}
}
};
console.log("object3['two']['twoone_prop']['twooneone_prop']:",object3["two"]["twoone_prop"]["twooneone_prop"]); // object3['two']['twoone_prop']['twooneone_prop']: twooneone_value
</pre>
<hr />
accessing nested arrays
<br />
<pre>
// accessing nested arrays
let nested_array = [
{
one_one: "1 one",
one_two: ["1 two_one","1 two_two","1 two_three","1 two_four"]
},
{
two_one: "2 one",
two_two: ["2 two_one","2 two_two","2 two_three","2 two_four"]
}
];
console.log(JSON.stringify(nested_array)); // [{"one_one":"1 one","one_two":["1 two_one","1 two_two","1 two_three","1 two_four"]},{"two_one":"2 one","two_two":["2 two_one","2 two_two","2 two_three","2 two_four"]}]
</pre>
<hr />
iterate array, odd even reverse iterate
<br />
<pre>
// iterate array
let iterate_array = [];
let increment = 0;
while (++increment<=10) {
iterate_array.push(increment);
}
console.log(JSON.stringify(iterate_array)); // [1,2,3,4,5,6,7,8,9,10]
console.log("reverse iterate array");
let odd_numbers = "";
let even_numbers = "";
for (let i=iterate_array.length-1; i>=0; --i) {
// console.log(iterate_array[i],);
if (iterate_array[i]%2==0) {
even_numbers += (iterate_array[i] + " ");
} else if (iterate_array[i]%2!=0) {
odd_numbers += (iterate_array[i] + " ");
}
}
console.log("odd numbers: ",odd_numbers, "even numbers: ", even_numbers); // odd numbers: 9 7 5 3 1 even numbers: 10 8 6 4 2
</pre>
<hr />
nested for loops
<br />
<pre>
// nested for loops
let nested_forloop = [[1,2,3],[4,5,6,7,8,9],[-1,0,1]];
console.log("complete array: ",JSON.stringify(nested_forloop)); // complete array: [[1,2,3],[4,5,6,7,8,9],[-1,0,1]]
let first_row_values = "";
let second_row_values = "";
let third_row_values = "";
for (let i=0; i<nested_forloop.length; ++i) {
for (let j=0; j<nested_forloop[i].length; ++j) {
if (i==0) { first_row_values += (" " + nested_forloop[i][j]); }
else if (i==1) { second_row_values += (" " + nested_forloop[i][j]); }
else if (i==2) { third_row_values += (" " + nested_forloop[i][j]); }
}
}
console.log("first_row_values: " + first_row_values); // first_row_values: 1 2 3
console.log("second_row_values: " + second_row_values); // second_row_values: 4 5 6 7 8 9
console.log("third_row_values: " + third_row_values); // third_row_values: -1 0 1
</pre>
<hr />
recursion
<br />
<pre>
// recursion
function count_down(number) {
console.log(number);
number = number - 1;
if (number > 0) {
count_down(number);
}
}
count_down(5);
// output:
// 5
// 4
// 3
// 2
// 1
</pre>
<pre>
function sum(number) {
console.log("the number: ",number);
if (number<=1) {
return number;
}
return number + sum(number-1);
}
console.log("result: ",sum(5));
// output:
// the number: 5
// the number: 4
// the number: 3
// the number: 2
// the number: 1
// result: 15
</pre>
<hr />
random number
<br />
<pre>
// random
let minimum_number = 10;
let maximum_number = 100;
for (let i=0; i<5; ++i) {
let random_number = Math.floor(Math.random() * (maximum_number - minimum_number)) + minimum_number;
console.log(`random number between between ${minimum_number} and ${maximum_number} is ${random_number}`);
}
// output:
// random number between between 10 and 100 is 80
// random number between between 10 and 100 is 39
// random number between between 10 and 100 is 83
// random number between between 10 and 100 is 49
// random number between between 10 and 100 is 95
</pre>
<hr />
parseInt
<br />
<pre>
// parseInt
console.log(parseInt("007")); // 7
console.log(parseInt("5dr")); // 5
console.log(parseInt("59")); // 59
console.log(parseInt("0x123")); // 291
console.log(parseInt("11",2)); // 3
</pre>
<hr />
ternary operator
<br />
<pre>
// ternary operator
console.log(1>2?true:false); // false
</pre>
<pre>
let ternary_result = 2 > 1 ? 2 > 3 ? "2 > 3" : "2 < 3" : "2 < 1";
console.log(ternary_result); // 2 < 3
</pre>
</div>
</body>
</html>
$(document).ready(function(){
console.log("a2rp: an Ashish Ranjan presentation");
// not working: why ???
// const element = document.getElementById("container");
// element.scrollTop = element.scrollHeight;
// console.log(element.scrollHeight);
$('html,body').animate({scrollTop: document.body.scrollHeight},"slow");
// comments
function program_1 () {
console.log("this will be logged");
// console.log("this will be commented");
console.log("this will be logged again");
/* console.log("this will be commented again"); */
/*
console.log("this will also be commented");
*/
}
program_1();
// output:
// this will be logged
// this will be logged again
console.log("\n");
// variables
// 8 types: undefined, null, boolean, string, symbol, bigint, number, object
var var_undefined;
console.log(typeof var_undefined); // undefined
var var_null = null;
console.log(typeof var_null); // object
// In JavaScript null is "nothing". It is supposed to be something that doesn't exist.
// Unfortunately, in JavaScript, the data type of null is an object.
// We can consider it a bug in JavaScript that typeof null is an object. It should be null.
var var_boolean = true;
console.log(typeof var_boolean); // boolean
var var_string = "a2rp: an Ashish Ranjan presentation";
var $_var_string = "dollar variable";
console.log(typeof var_string, typeof $_var_string); // string string
var var_bigint1 = 99n;
var var_bigint2 = BigInt(99);
console.log(typeof var_bigint1,typeof var_bigint2); // bigint bigint
var var_number = 22.7;
console.log(typeof var_number); // number
var var_object = new Date();
console.log(typeof var_object); // object
console.log("\n");
// Assigning the Value of One Variable to Another
var variable_1 = 22.7;
var variable_2 = variable_1;
console.log("variable_2 = ",variable_2); // variable_2 = 22.7
console.log("\n");
// javascript case sensitive variables
var small_case_variable = true;
var SMALL_CASE_VARIABLE = false;
console.log(small_case_variable, SMALL_CASE_VARIABLE); // true false
console.log("\n");
// Differences Between the var and let Keywords
var name = "Ashish";
var name = "Ranjan";
console.log("name:",name); // name: Ranjan
let name1 = "Ashish";
// Cannot redeclare block-scoped variable 'name1'.ts(2451)
// let name1 = "Ranjan"; // Uncaught SyntaxError: Identifier 'name1' has already been declared
console.log("\n");
// Declare a Read-Only Variable with the const Keyword
let mutable_var = 15;
mutable_var = 20;
console.log("mutable_var:",mutable_var); // mutable_var: 20
const readonly_var = 25;
// readonly_var = 30; // Uncaught TypeError: Assignment to constant variable.
console.log("\n");
// add numbers
let number_1 = 20;
let number_2 = 20.12;
let number_3 = number_1 + number_2;
console.log(number_3); // 40.120000000000005
console.log("\n");
// subtratc numbers
let subtract_number_1 = 20;
let subtract_number_2 = 20.12;
const subtract_result = subtract_number_1 - subtract_number_2;
console.log(subtract_result); // -0.120000000000001
console.log("\n");
// multiply two numbers
const multiplied_numbers = 12 * 34;
console.log(multiplied_numbers); // 408
console.log("\n");
// divide numbers
const divide = 23 / 2;
console.log(divide); // 11.5
console.log("\n");
// icrement
let i = 0, j = 0, k = 0;
console.log(++i,j++,k+=1); // 1 0 1
console.log(i,j,k); // 1 1 1
console.log("\n");
// decrement
let a = 0, b = 0, c = 0;
console.log(--a,b--,c-=1); // -1 0 -1
console.log(a,b,c); // -1 -1 -1
console.log("\n");
// remainder
let remainder_num1 = 33;
let remainder_num2 = 10;
console.log(remainder_num1%remainder_num2); // 3
console.log("\n");
// Compound Assignment With Augmented operation
let compound_assignment_number = 17;
console.log(compound_assignment_number+=7); // 24
console.log(compound_assignment_number-=7); // 17
console.log(compound_assignment_number*=7); // 119
console.log(compound_assignment_number/=7); // 17
console.log("\n");
// escape sequences
let before_escape_sequence_string = "a2rp: an Ashish Ranjan presentation";
let after_escape_sequence_string = "\ba2r\fp: \nan Ashish R\tanj\van p\'rese\"ntati\\on";
console.log(before_escape_sequence_string);
console.log(after_escape_sequence_string);
// output:
// a2rp: an Ashish Ranjan presentation
// scripts.js:134 a2rp:
// an Ashish R anj an p'rese"ntati\on
console.log("\n");
// concatenating strings with +
console.log("a2rp: "+"an Ashish Ranjan presentation"); // a2rp: an Ashish Ranjan presentation
let concat_str1 = "a2rp: ";
let concat_str2 = "an Ashish Ranjan presentation";
let concat_str3 = concat_str1 + " - " + concat_str2;
console.log(concat_str3); // a2rp: - an Ashish Ranjan presentation
let concat_result = concat_str1 + concat_str2;
console.log(concat_result); // a2rp: an Ashish Ranjan presentation
concat_result += "plus_equal";
console.log(concat_result); // a2rp: an Ashish Ranjan presentationplus_equal
console.log("\n");
// string length
let str_length = "a2rp: an Ashish Ranjan presentation";
console.log("length = "+str_length.length); // length = 35
console.log("\n");
// string index
let str_index = "a2rp: an Ashish Ranjan presentation";
console.log("second char of string =",str_index[1],"fourth char of string =",str_index[3]); // second char of string = 2 fourth char of string = p
console.log("\n");
// immutable string
let immutable_str = "ABCDEF";
immutable_str[0] = '0';
immutable_str[1] = '1';
console.log(immutable_str); // ABCDEF
immutable_str = "123456";
console.log(immutable_str[0]); // 1
console.log("last character is",immutable_str[immutable_str.length-1]); // last character is 6
console.log("\n");
// arrays
let array_var = ["a2rp:", "an", "Ashish", "Ranjan", "presentation"];
console.log("array_var: ",array_var);
// output:
// (5) ['a2rp:', 'an', 'Ashish', 'Ranjan', 'presentation']
// 0: "a2rp:"
// 1: "an"
// 2: "Ashish"
// 3: "Ranjan"
// 4: "presentation"
// length: 5
// [[Prototype]]: Array(0)
let nestarray_var = [["a2rp:"], ["an", "Ashish", "Ranjan", "presentation"]];
console.log(nestarray_var);
console.log(nestarray_var[1][0]); // an
// output:
// (2) [Array(1), Array(4)]
// 0: ['a2rp:']
// 1: (4) ['an', 'Ashish', 'Ranjan', 'presentation']
// length: 2
// [[Prototype]]: Array(0)
for (let i=0; i<array_var.length; ++i) {
console.log("at place "+(i+1)+" value =",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = an
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
array_var[1] = "the";
for (let i=0; i<array_var.length; ++i) {
console.log("at place "+(i+1)+" value =",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
array_var.push([1,2,3]);
for (let i=0; i<array_var.length; ++i) {
console.log("at place "+(i+1)+" value =",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
// at place 5 value = presentation
// at place 6 value = (3) [1, 2, 3]
console.log(array_var.pop()); // [1, 2, 3]
console.log(array_var.pop()); // presentation
for (let i=0; i<array_var.length; ++i) {
console.log("at place "+(i+1)+" value =",array_var[i]);
}
// output:
// at place 1 value = a2rp:
// at place 2 value = the
// at place 3 value = Ashish
// at place 4 value = Ranjan
array_var.shift();
console.log(array_var); // (3) ['the', 'Ashish', 'Ranjan']
array_var.shift();
console.log(array_var); // ['Ashish', 'Ranjan']
array_var.unshift("1");
console.log(array_var); // ['1', 'Ashish', 'Ranjan']
array_var.unshift("2");
console.log(array_var); // ['2', '1', 'Ashish', 'Ranjan']
console.log("\n");
// functions
function test_function(number1,number2=3) {
return number1 + number2;
}
let return_value = test_function(25);
console.log(return_value); // 28
console.log("\n");
// variable scope and functions
function variable_scope_function() {
var variable_scope_number_1 = 12;
variable_scope_number_2 = 23;
console.log(variable_scope_number_1 + variable_scope_number_2);
}
variable_scope_function(); // 35
try {
console.log(variable_scope_number_1);
} catch (error) {
console.log(error.message); // variable_scope_number_1 is not defined
}
console.log(variable_scope_number_2); // 23
console.log("\n");
// global variable vs local variable precedence
let variable_3 = "outside global variable";
function function_3() {
let variable_3 = "inside local variable";
console.log(variable_3);
}
function_3(); // inside local variable
console.log("\n");
// array add at last and remove first
let number_array_1 = [1,2,3,4,5,6];
let number2add = 7;
function addlast_removefirst(the_array,number) {
// add element at last
the_array.push(number);
console.log(JSON.stringify(the_array));
// array.splice(index, howmany, item1, ....., itemX)
// index: Required: The position to add/remove items: Negative value defines the position from the end of the array
// howmany: Optional: Number of items to be removed
// item1, ..., itemX: Optional: New elements(s) to be added
the_array.splice(0,1);
console.log("after remove first");
console.log(JSON.stringify(the_array));
// return the_array;
}
addlast_removefirst(number_array_1,number2add);
console.log("\n");
// boolean values
let boolean_value = false;
console.log("boolean_value:",boolean_value,", its opposite:",!boolean_value); // boolean_value: false , its opposite: true
console.log("\n");
// boolean conditional
if (boolean_value) {
console.log("boolean value is true");
} else if(!boolean_value) {
console.log("boolean value is false");
}
// output:
// boolean value is false
console.log("\n");
// comparison with equality operator
console.log(1==1); // true
console.log(1==2); // false
console.log("1"==1); // true
console.log(1=="1"); // true
console.log("\n");
// strict equality operator
console.log(1===1); // true
console.log(1==2); // false
console.log("1"===1); // false
console.log(1==="1"); // false
console.log("\n");
// comparison with not equality operator
console.log(1!=2); // true
console.log(1!="1"); // false
console.log(1!='1'); // false
console.log(1!=true); // false
console.log(0!=false); // false
console.log("\n");
// strictly not equality operator
console.log(3!==3); // false
console.log(3!=='3'); // true
console.log(4!==3); // true
console.log("\n");
// switch case
for (let i=0; i<9; ++i) {
switch (i) {
case 1:
console.log(i,"one");
break;
case 2:
console.log(i,"two");
break;
case 3:
console.log(i,"three");
break;
case 4:
case 5:
case 6:
console.log(i,"four five six");
break;
case 7:
console.log(i,"seven");
break;
default:
console.log(i,"i,neither one nor two, three, four, five, six or seven... this is default");
}
}
// output:
// 0 'i,neither one nor two, three, four, five, six or seven... this is default'
// 1 'one'
// 2 'two'
// 3 'three'
// 4 'four five six'
// 5 'four five six'
// 6 'four five six'
// 7 'seven'
// 8 'i,neither one nor two, three, four, five, six or seven... this is default'
console.log("\n");
// returning boolean from functions
function return_booean(num1,num2) {
return num1 > num2;
}
console.log(return_booean(45,34)); // true
console.log(return_booean(-45,34)); // false
console.log("\n");
// object
const object1 = {
"property_1": "value 1",
2: "value 2",
"property three": "value three",
property_four: "value four"
};
console.log(object1); // {2: 'value 2', property_1: 'value 1', property three: 'value three', property_four: 'value four'}
console.log(JSON.stringify(object1)); // {"2":"value 2","property_1":"value 1","property three":"value three","property_four":"value four"}
console.log("\n");
// accessing objects values with properties
let four;
const object2 = {
"prop_one": "value 1",
2: "value 2",
3.3: "three point 3",
four: "value 4",
prop_five: "value 5",
"property space": "value for property space"
};
console.log(object2); // {2: 'value 2', prop_one: 'value 1', 3.3: 'three point 3', four: 'value 4', prop_five: 'value 5', property space: 'value for property space'}
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three","four":"value 4","prop_five":"value 5"}
console.log("object2['prop_one']:",object2["prop_one"]); // object2['prop_one']: value 1
let property_2 = object2[2];
console.log("property_2",property_2); // property_2 value 2
console.log("object2[3.3]",object2[3.3]); // object2[3.3] three point 3
console.log("object2.four",object2.four); // object2.four value 4
console.log("object2.prop_five",object2.prop_five); // object2.prop_five value 5
console.log("object2['property space']",object2["property space"]); // object2['property space'] value for property space
object2["property space"] = "changed value";
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","four":"value 4","prop_five":"value 5","property space":"changed value"}
object2.new_property = "new property added";
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","four":"value 4","prop_five":"value 5","property space":"changed value","new_property":"new property added"}
delete object2.four;
console.log(JSON.stringify(object2)); // {"2":"value 2","prop_one":"value 1","3.3":"three point 3","prop_five":"value 5","property space":"changed value","new_property":"new property added"}
console.log("\n");
// hasownproperty
for (const key in object2) {
if (object2.hasOwnProperty(key)) {
console.log(`${key}: ${object2[key]}`);
}
}
// output:
// 2: value 2
// prop_one: value 1
// 3.3: three point 3
// prop_five: value 5
// property space: changed value
// new_property: new property added
console.log("\n");
// accessing nested objects
let object3 = {
"one": {
"oneone_prop": "oneone_value",
"onetwo_prop": "onetwo_value"
},
"two": {
"twoone_prop": {
"twooneone_prop": "twooneone_value",
"twoonetwo_prop": "twoonetwo_value"
}
}
};
console.log("object3['two']['twoone_prop']['twooneone_prop']:",object3["two"]["twoone_prop"]["twooneone_prop"]); // object3['two']['twoone_prop']['twooneone_prop']: twooneone_value
console.log("\n");
// accessing nested arrays
let nested_array = [
{
one_one: "1 one",
one_two: ["1 two_one","1 two_two","1 two_three","1 two_four"]
},
{
two_one: "2 one",
two_two: ["2 two_one","2 two_two","2 two_three","2 two_four"]
}
];
console.log(JSON.stringify(nested_array)); // [{"one_one":"1 one","one_two":["1 two_one","1 two_two","1 two_three","1 two_four"]},{"two_one":"2 one","two_two":["2 two_one","2 two_two","2 two_three","2 two_four"]}]
console.log("\n");
// iterate array
let iterate_array = [];
let increment = 0;
while (++increment<=10) {
iterate_array.push(increment);
}
console.log(JSON.stringify(iterate_array)); // [1,2,3,4,5,6,7,8,9,10]
console.log("reverse iterate array");
let odd_numbers = "";
let even_numbers = "";
for (let i=iterate_array.length-1; i>=0; --i) {
// console.log(iterate_array[i],);
if (iterate_array[i]%2==0) {
even_numbers += (iterate_array[i] + " ");
} else if (iterate_array[i]%2!=0) {
odd_numbers += (iterate_array[i] + " ");
}
}
console.log("odd numbers: ",odd_numbers, "even numbers: ", even_numbers); // odd numbers: 9 7 5 3 1 even numbers: 10 8 6 4 2
console.log("\n");
// nested for loops
let nested_forloop = [[1,2,3],[4,5,6,7,8,9],[-1,0,1]];
console.log("complete array: ",JSON.stringify(nested_forloop)); // complete array: [[1,2,3],[4,5,6,7,8,9],[-1,0,1]]
let first_row_values = "";
let second_row_values = "";
let third_row_values = "";
for (let i=0; i<nested_forloop.length; ++i) {
for (let j=0; j<nested_forloop[i].length; ++j) {
if (i==0) { first_row_values += (" " + nested_forloop[i][j]); }
else if (i==1) { second_row_values += (" " + nested_forloop[i][j]); }
else if (i==2) { third_row_values += (" " + nested_forloop[i][j]); }
}
}
console.log("first_row_values: " + first_row_values); // first_row_values: 1 2 3
console.log("second_row_values: " + second_row_values); // second_row_values: 4 5 6 7 8 9
console.log("third_row_values: " + third_row_values); // third_row_values: -1 0 1
console.log("\n");
// recursion
function count_down(number) {
console.log(number);
number = number - 1;
if (number > 0) {
count_down(number);
}
}
count_down(5);
// output:
// 5
// 4
// 3
// 2
// 1
console.log("\n");
function sum(number) {
console.log("the number: ",number);
if (number<=1) {
return number;
}
return number + sum(number-1);
}
console.log("result: ",sum(5));
// output:
// the number: 5
// the number: 4
// the number: 3
// the number: 2
// the number: 1
// result: 15
console.log("\n");
// random
let minimum_number = 10;
let maximum_number = 100;
for (let i=0; i<5; ++i) {
let random_number = Math.floor(Math.random() * (maximum_number - minimum_number)) + minimum_number;
console.log(`random number between between ${minimum_number} and ${maximum_number} is ${random_number}`);
}
// output:
// random number between between 10 and 100 is 80
// random number between between 10 and 100 is 39
// random number between between 10 and 100 is 83
// random number between between 10 and 100 is 49
// random number between between 10 and 100 is 95
console.log("\n");
// parseInt
console.log(parseInt("007")); // 7
console.log(parseInt("5dr")); // 5
console.log(parseInt("59")); // 59
console.log(parseInt("0x123")); // 291
console.log(parseInt("11",2)); // 3
console.log("\n");
// ternary operator
console.log(1>2?true:false); // false
let ternary_result = 2 > 1 ? 2 > 3 ? "2 > 3" : "2 < 3" : "2 < 1";
console.log(ternary_result); // 2 < 3
});