Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 68 additions & 10 deletions scripts/tasks.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@
// а возвращать – массив значений одного из полей (отсортированных в порядке возрастания):
// ------------------------

let usersData = [
function getFieldValues(array, key)
{
var result = [];
array.forEach(function(item, i, arr) {
if (item[key] != undefined) result.push(item[key]);
});
return result.sort;
}
var usersData = [
{ 'user' : 'Alex', 'password' : 'MyNameIsAlex' },
{ 'user' : 'Bob', 'password' : 'MyNAmeIsBob' }
];
Expand All @@ -14,20 +22,39 @@ console.log(getFieldValues(usersData, 'user')); // --> ['Alex', 'Bob']
// 2) Написать функцию, фильтрующую массив с использованием предиката:
// ------------------------

let numbers = [1, 2, 3, 5, 8, 13, 21, 34, 55];
function isEven(x) {/* Проверка на чётность */}
var numbers = [1, 2, 3, 5, 8, 13, 21, 34, 55];
function isEven(x)
{
return x % 2 == 0;
}
function filter(ar, f)
{
if (typeof func != "function") return null;
return array.filter(func);
}
console.log(filter(numbers, isEven)); // --> [2, 8, 34]

// ------------------------


// 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';
console.log(findSimilarWords(firstLongString, secondLongString)); // --> ['and', 'is'];
function findSimilarWords(str1, str2) {
var result = [];
var arr1 = str1.split(" ");
var arr2 = str2.split(" ");
arr1.forEach(function(item, i, arr) {
if (!arr2.indexOf(item) == -1 && result.indexOf(item) == -1) {
result.push(item);
}
});
return result;
}
var firstLongString = 'I will deliver, You know I am a forgiver, Reach out and touch faith, Your own personal Jesus';
var secondLongString = 'Reach out and touch faith, Your own personal Jesus, Someone to hear your prayers, Someone who cares';
console.log(findSimilarWords(firstLongString, secondLongString));

// ------------------------

Expand All @@ -40,14 +67,45 @@ 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 validate(str)
{
var octets = str.split(".");
if (octets.length > 4)
{
console.warn("invalid ip address: too many octets");
return null;
}
var result = [];
for (var i = 0, l = octets.length; i < l; i++) result.push(parseInt(octets[i]));
result.forEach(function(n)
{
if(n > 255 && n < 0)
{
console.warn("invalid ip address: one of the octets is not in range");
return null;
}
})
return result;
}
// провалидировали, а что дальше делать - непонятно
// ------------------------


// 5) Соединить все массивы в один, не допуская повторения элементов (порядок не важен):
// ------------------------

var totalMessArray = [['a', 1, true], [true, 99, 'aa', undefined], ['1']];
console.log(makeItClean(totalMessArray)); // --> ['a', 'aa', 1, '1', undefined, true];

function makeItClean(array) {
if (typeof array != "object") return null;
var result = [];
for (var i = 0; i < array.length; i++) {
result = result.concat(array[i]);
}
result = result.filter(function(item, pos) {
return result.indexOf(item) == pos;
});
return result;
}
console.log(makeItClean(totalMessArray));
// eto gg
// ------------------------