diff --git a/.idea/JavaScriptBeginnerCourse.iml b/.idea/JavaScriptBeginnerCourse.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/JavaScriptBeginnerCourse.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..6692caa
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5480136
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..1c95420
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ false
+ true
+ true
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
index 6acb301..3f5bf9e 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
Start Page — JavaScript Beginner Course 2017
-
+
Hi there! Let's start to learn JavaScript.
diff --git a/scripts/tasks.js b/scripts/tasks.js
index 5b21e5e..4e45620 100644
--- a/scripts/tasks.js
+++ b/scripts/tasks.js
@@ -6,6 +6,17 @@ let usersData = [
{ 'user' : 'Alex', 'password' : 'MyNameIsAlex' },
{ 'user' : 'Bob', 'password' : 'MyNAmeIsBob' }
];
+
+function getFieldValues(usersData, s) {
+ var array1 = [];
+ for (var i in usersData) {
+
+ array1.push(usersData[i][s]);
+ }
+ return array1.sort();
+
+}
+
console.log(getFieldValues(usersData, 'user')); // --> ['Alex', 'Bob']
// ------------------------
@@ -15,18 +26,47 @@ console.log(getFieldValues(usersData, 'user')); // --> ['Alex', 'Bob']
// ------------------------
let numbers = [1, 2, 3, 5, 8, 13, 21, 34, 55];
-function isEven(x) {/* Проверка на чётность */}
+function isEven(x) {
+ return (x % 2 == 0) ? true : false;
+}
+
+function filter(numbers, isEven) {
+ var array2 = [];
+ for (i in numbers){
+ if (isEven(numbers[i])){
+ array2.push(numbers[i]);
+ }
+ }
+ return array2;
+}
+
console.log(filter(numbers, isEven)); // --> [2, 8, 34]
// ------------------------
-// 3) Даны 2 строки со словами (без знаков препинания),
+// 3) Даны 2 строки со словами (без знаков препинания),
// вывести те слова (по одному разу), которые встречаются в обоих строках
// ------------------------
var firstLongString = 'Load up on guns and bring your friends it is fun to lose and to pretend';
var secondLongString = 'She is over bored and self assured oh no I know a dirty word';
+
+function findSimilarWords(firstLongString, secondLongString) {
+ var array3 = firstLongString.split(' ');
+ var array4 = secondLongString.split(' ');
+ var sum = [];
+ for (i in array3) {
+ if (array4.includes(array3[i])){
+ if (sum.includes(array3[i]) == false){
+ sum.push(array3[i]);
+ }
+ }
+ }
+ return sum;
+
+}
+
console.log(findSimilarWords(firstLongString, secondLongString)); // --> ['and', 'is'];
// ------------------------
@@ -39,7 +79,67 @@ console.log(findSimilarWords(firstLongString, secondLongString)); // --> ['and',
var IpAddress = '10.223.98.2';
var subnetMask = 28;
-console.log(generateBroadcastAndNetworsAddresses(IpAddress, subnetMask)); // Broadcast - 10.223.98.15, Network - 10.223.98.0
+
+function cidrToNetMask(num){
+ let maskBinArr = [];
+ let maskArr = [];
+ let chunk = 8;
+ let inverse = [];
+ let maskInv = [];
+
+ for (i = 0; i < 32; i += 1){
+ if (num > 0){
+ maskBinArr.push(1);
+ }
+ else{
+ maskBinArr.push(0);
+ }
+ num -= 1;
+ }
+
+//inverse mask
+
+ for (i = 0; i < 32; i += 1) {
+ inverse[i] = (maskBinArr[i] == 0) ? 1 : 0;
+ }
+
+ for (i=0; i<32; i+=chunk) {
+ maskArr.push(parseInt(maskBinArr.slice(i,i+chunk).join(''), 2));
+ maskInv.push(parseInt(inverse.slice(i,i+chunk).join(''), 2));
+ }
+
+ return [maskArr, maskInv];
+}
+
+function generateBroadcastAndNetworsAddresses(ip, mask){
+ let ipArr = ip.split('.');
+ let NetAddress = [];
+ var inv = cidrToNetMask(mask)[1];
+ var mask = cidrToNetMask(mask)[0];
+ let broadcast = [];
+
+//calculate NetAddress
+
+ for (i = 0; i < 4; i += 1){
+ NetAddress[i] = parseInt(ipArr[i]) & mask[i];
+ }
+
+//calculate Broadcast
+
+ for (i = 0; i < 4; i += 1){
+ broadcast[i] = NetAddress[i] | inv[i];
+ }
+
+//output
+
+ var broadcastOut = broadcast.join('.');
+ var netAddressOut = NetAddress.join('.');
+
+ return "Broadcast - " + broadcastOut + ", Network - " + netAddressOut;
+}
+console.log(generateBroadcastAndNetworsAddresses(IpAddress, subnetMask));
+
+// Broadcast - 10.223.98.15, Network - 10.223.98.0
// ------------------------
@@ -48,6 +148,21 @@ console.log(generateBroadcastAndNetworsAddresses(IpAddress, subnetMask)); // Bro
// ------------------------
var totalMessArray = [['a', 1, true], [true, 99, 'aa', undefined], ['1']];
+
+function makeItClean(totalMessArray) {
+ var array5 = [];
+ for (i in totalMessArray){
+ array5 = array5.concat(totalMessArray[i]);
+ }
+
+ array5 = array5.filter(function(item, pos) {
+ return array5.indexOf(item) == pos;
+ });
+
+ return array5;
+
+}
+
console.log(makeItClean(totalMessArray)); // --> ['a', 'aa', 1, '1', undefined, true];
// ------------------------