KEMBAR78
Coding for Future in Lutsk. JavaScript. Part 8 | PDF
Методи і властивості
Всі значення у JavaScript, крім null і
undefined, містять набір допоміжних
функцій і значень, які називаються
методами і властивостями відповідно.
Вони викликаються через крапку.
Методи і властивості рядкових
величин
Властивість str.length
alert( "Якийсь текст".length ); // 12
var str = "Якийсь текст";
alert( str.length ); // 12
Методи викликаються з додаванням ().
Метод str.toUpperCase()
var txt = "Якийсь текст";
alert( txt.toUpperCase() ); // ЯКИЙСЬ ТЕКСТ
Аналогічно - toLowerCase()
Деякі спеціальні символи
n New line
r Carriage return
t Tab
Приклад:
alert( 'ОдинnДва' );
Екранування спеціальних символів
' '
" "
Властивість length
var str = "Myn";
alert( str.length ); // 3
Метод charAt()
var str = 'Реве та стогне Дніпр
широкий';
alert( str.charAt(0) ); // Р
Альтернативний спосіб:
alert( str[0] ); // Р
Пошук підрядка
indexOf(підрядок[, стартова_позиція]).
Приклад:
var someText = "Думи мої, думи мої,nЛихо
мені з вами!";
alert( someText.indexOf("Думи") ); // 0
alert( someText.indexOf("думи") ); // 10
alert( someText.indexOf("лихо") ); // -1
Виділення підрядка
substring(start [, end])
не влючаючи end!
Приклад:
var str = "Hello world!";
var res = str.substring(0, 4);
alert( res ); // Hell
alert( str.substring(6) ); //
world!
substr(start [, length])
Приклад:
var str = "Hello world!";
var res = str.substr(1, 4); // "ello"
alert( str.substr(6) ); // world!
slice(start [, end])
не влючаючи end!
Приклад:
var str = "Hello world!";
var res = str.slice(1, 4);
alert( res ); // ell
alert( str.slice(6) ); // world!
У методі substring від’ємні аргументи
заміняються на 0, а завеликі обрізаються до
довжини рядка. Якщо start > end, то
аргументи міняються місцями.
У методі slice від’ємні аргументи
відраховуються від кінця рядка.
alert( "JavaScript".substring(4, -1) ); // Java
alert( "JavaScript".slice(4, -1) ); // Scrip
Метод replace
str.replace(підрядок, новий_підрядок)
Заміняється тільки перше входження!
Приклад:
var str = "У лісі, лісі темному";
var str2 = str.replace("лісі","парку");
alert( str2 ); // = "У парку, лісі
темному"
alert( str ); // "У лісі, лісі темному";
Задача 29
Напишіть функцію ucFirst(str), яка
повертає рядок str з великою першою
буквою, наприклад:
ucFirst("вася") == "Вася";
ucFirst("") == ""; // нема помилки при
порожньому рядку
Розв’язок
function ucFirst(str) {
if (!str) return str; // спрацює
тільки для порожнього рядка
return str[0].toUpperCase() +
str.slice(1);
}
alert( ucFirst("вася") );
Задача 30
Напишіть функцію checkSpam(str), яка
повертає true, якщо рядок str містить
"porn" або "xxx", а інакше false. Функція
повинна бути нечутливою до регістру.
Розв’язок
function checkSpam(str) {
var lowerStr = str.toLowerCase();
return !!((lowerStr.indexOf('porn')+1) ||
(lowerStr.indexOf('xxx')+1));
}
alert( checkSpam('best pOrN movies') );
alert( checkSpam('free xxxxx') );
alert( checkSpam("Голосуйте за Івана!") );
Задача 31
Напишіть функцію countSubstr(str), яка
рахуватиме всі входження підрядка у
рядок. Наприклад:
alert( countSubstr("Думи мої,
думи мої/nЛихо мені з вами!",
"Думи") ); // 2
Розв’язок 1
var txt = "Думи мої, думи мої/nЛихо мені з вами!";
var substr = "Думи";
function countSubstr(str, substr) {
var counter = 0;
var lowerStr = str.toLowerCase();
var lowerSubstr = substr.toLowerCase();
while (lowerStr.indexOf(lowerSubstr)!=-1) {
lowerStr =
lowerStr.slice(lowerStr.indexOf(lowerSubstr)+1);
counter++;
}
return counter;
}
alert( countSubstr(txt, substr) );
Скажіть, що буде виводитись такими командами:
alert(txt);
alert(substr);
Розв’язок 2
function countSubstr2(str, substr) {
var counter = 0;
var pos = 0;
var lowerStr = str.toLowerCase();
var lowerSubstr = substr.toLowerCase();
while (true) {
var foundPos =
lowerStr.indexOf(lowerSubstr, pos);
if (foundPos == -1) break;
pos = foundPos + 1;
counter++;
}
return counter;
}
Задача 32
Напишіть функцію truncate(str,
maxlength), яка перевіряє довжину рядка
str, і якщо вона > maxlength – заміняє
кінець str на "...", так щоб її довжина
стала рівна maxlength.
Приклад роботи:
truncate("Еней був парубок моторний І
хлопець хоть куди козак", 20) = "Еней був
парубок ...";
truncate("Котляревський", 20) = "
Котляревський";
Розв’язок
function truncate(str, maxlength) {
if (str.length > maxlength) {
return str.slice(0, maxlength - 3) +
'...'; // довжина стане рівною maxlength
}
return str;
}
alert( truncate("Еней був парубок
моторний І хлопець хоть куди козак", 20)
);
alert( truncate("Котляревський", 20) );
Методи і властивості числових
величин
Метод num.toFixed(n)
Округлює число num до n знаків після десяткової крапки,
при необхідності доповнюючи нулями до заданої довжини і
повертає в рядковому вигляді.
var n = 12.345;
alert( n.toFixed(2) ); // "12.35"
alert( n.toFixed(0) ); // "12"
alert( n.toFixed(5) ); // "12.34500"
alert(12.toFixed(1)); // помилка! Можна так:
alert( 12..toFixed(1) ); // 12.0
Запис числа в різних формах:
alert( 0xFF ); // 255 шістнадцяткова
alert( 3e5 ); // 300000 експоненціальна
alert( 0b1010101 ); // 85 двійкова
Перетворення в число:
var s = "12.34";
alert( +s ); // 12.34
alert( +"12test" ); // NaN
alert( '12.34' / "-2" ); // -6.17
Перетворення числа в іншу систему:
var n = 255;
alert( n.toString(16) ); // ff
alert( n.toString(2) ); //
11111111
Математичні операції округлення
Math.floor Округлює вниз
Math.ceil Округлює вгору
Math.round Округлює до найближчого цілого
alert( Math.floor(3.1) ); // 3
alert( Math.ceil(3.1) ); // 4
alert( Math.round(3.1) ); // 3
Задача 33
а) Округліть число до другого знаку після
десяткової крапки.
3.456  3.46
б) Округліть число до сотень.
3456  3500
Розв’язок
var n1 = 3.456;
alert( Math.round(n1 * 100) / 100 );
var n2 = 3456;
alert( Math.round(n2 / 100) * 100 );
Деякі математичні методи
Math.sin(x) Синус
Math.cos(x) Косинус
Math.sqrt(x) Квадратний корінь
Math.pow(x, exp) xexp
Math.abs(x) Абсолютне значення
Math.max(a, b, c...)
Math.min(a, b, c...)
Math.random() випадкове число в інтервалі [0,1)
Задача 34
а) Напишіть код для генерації
випадкового числа від min до max.
б) Напишіть код для генерації
випадкового цілого числа від min до max
(включаючи min і max).
Розв’язок
а)
var min = 5, max = 10;
alert( min + Math.random() * (max - min) );
б)неправильний розв’язок:
function randomInteger(min, max) {
var rand = min + Math.random() * (max - min)
rand = Math.round(rand);
return rand;
}
alert( randomInteger(1, 3) ); // 2 випадає вдвічі
частіше, ніж 1 і 3.
б) один з варіантів правильного розв’язку
function randomInteger(min, max) {
var rand = min + Math.random() * (max + 1 - min);
rand = Math.floor(rand);
return rand;
}

Coding for Future in Lutsk. JavaScript. Part 8

  • 1.
    Методи і властивості Всізначення у JavaScript, крім null і undefined, містять набір допоміжних функцій і значень, які називаються методами і властивостями відповідно. Вони викликаються через крапку.
  • 2.
    Методи і властивостірядкових величин Властивість str.length alert( "Якийсь текст".length ); // 12 var str = "Якийсь текст"; alert( str.length ); // 12 Методи викликаються з додаванням (). Метод str.toUpperCase() var txt = "Якийсь текст"; alert( txt.toUpperCase() ); // ЯКИЙСЬ ТЕКСТ Аналогічно - toLowerCase()
  • 3.
    Деякі спеціальні символи nNew line r Carriage return t Tab Приклад: alert( 'ОдинnДва' ); Екранування спеціальних символів ' ' " "
  • 4.
    Властивість length var str= "Myn"; alert( str.length ); // 3 Метод charAt() var str = 'Реве та стогне Дніпр широкий'; alert( str.charAt(0) ); // Р Альтернативний спосіб: alert( str[0] ); // Р
  • 5.
    Пошук підрядка indexOf(підрядок[, стартова_позиція]). Приклад: varsomeText = "Думи мої, думи мої,nЛихо мені з вами!"; alert( someText.indexOf("Думи") ); // 0 alert( someText.indexOf("думи") ); // 10 alert( someText.indexOf("лихо") ); // -1
  • 6.
    Виділення підрядка substring(start [,end]) не влючаючи end! Приклад: var str = "Hello world!"; var res = str.substring(0, 4); alert( res ); // Hell alert( str.substring(6) ); // world!
  • 7.
    substr(start [, length]) Приклад: varstr = "Hello world!"; var res = str.substr(1, 4); // "ello" alert( str.substr(6) ); // world! slice(start [, end]) не влючаючи end! Приклад: var str = "Hello world!"; var res = str.slice(1, 4); alert( res ); // ell alert( str.slice(6) ); // world!
  • 8.
    У методі substringвід’ємні аргументи заміняються на 0, а завеликі обрізаються до довжини рядка. Якщо start > end, то аргументи міняються місцями. У методі slice від’ємні аргументи відраховуються від кінця рядка. alert( "JavaScript".substring(4, -1) ); // Java alert( "JavaScript".slice(4, -1) ); // Scrip
  • 9.
    Метод replace str.replace(підрядок, новий_підрядок) Заміняєтьсятільки перше входження! Приклад: var str = "У лісі, лісі темному"; var str2 = str.replace("лісі","парку"); alert( str2 ); // = "У парку, лісі темному" alert( str ); // "У лісі, лісі темному";
  • 10.
    Задача 29 Напишіть функціюucFirst(str), яка повертає рядок str з великою першою буквою, наприклад: ucFirst("вася") == "Вася"; ucFirst("") == ""; // нема помилки при порожньому рядку
  • 11.
    Розв’язок function ucFirst(str) { if(!str) return str; // спрацює тільки для порожнього рядка return str[0].toUpperCase() + str.slice(1); } alert( ucFirst("вася") );
  • 12.
    Задача 30 Напишіть функціюcheckSpam(str), яка повертає true, якщо рядок str містить "porn" або "xxx", а інакше false. Функція повинна бути нечутливою до регістру.
  • 13.
    Розв’язок function checkSpam(str) { varlowerStr = str.toLowerCase(); return !!((lowerStr.indexOf('porn')+1) || (lowerStr.indexOf('xxx')+1)); } alert( checkSpam('best pOrN movies') ); alert( checkSpam('free xxxxx') ); alert( checkSpam("Голосуйте за Івана!") );
  • 14.
    Задача 31 Напишіть функціюcountSubstr(str), яка рахуватиме всі входження підрядка у рядок. Наприклад: alert( countSubstr("Думи мої, думи мої/nЛихо мені з вами!", "Думи") ); // 2
  • 15.
    Розв’язок 1 var txt= "Думи мої, думи мої/nЛихо мені з вами!"; var substr = "Думи"; function countSubstr(str, substr) { var counter = 0; var lowerStr = str.toLowerCase(); var lowerSubstr = substr.toLowerCase(); while (lowerStr.indexOf(lowerSubstr)!=-1) { lowerStr = lowerStr.slice(lowerStr.indexOf(lowerSubstr)+1); counter++; } return counter; } alert( countSubstr(txt, substr) ); Скажіть, що буде виводитись такими командами: alert(txt); alert(substr);
  • 16.
    Розв’язок 2 function countSubstr2(str,substr) { var counter = 0; var pos = 0; var lowerStr = str.toLowerCase(); var lowerSubstr = substr.toLowerCase(); while (true) { var foundPos = lowerStr.indexOf(lowerSubstr, pos); if (foundPos == -1) break; pos = foundPos + 1; counter++; } return counter; }
  • 17.
    Задача 32 Напишіть функціюtruncate(str, maxlength), яка перевіряє довжину рядка str, і якщо вона > maxlength – заміняє кінець str на "...", так щоб її довжина стала рівна maxlength. Приклад роботи: truncate("Еней був парубок моторний І хлопець хоть куди козак", 20) = "Еней був парубок ..."; truncate("Котляревський", 20) = " Котляревський";
  • 18.
    Розв’язок function truncate(str, maxlength){ if (str.length > maxlength) { return str.slice(0, maxlength - 3) + '...'; // довжина стане рівною maxlength } return str; } alert( truncate("Еней був парубок моторний І хлопець хоть куди козак", 20) ); alert( truncate("Котляревський", 20) );
  • 19.
    Методи і властивостічислових величин Метод num.toFixed(n) Округлює число num до n знаків після десяткової крапки, при необхідності доповнюючи нулями до заданої довжини і повертає в рядковому вигляді. var n = 12.345; alert( n.toFixed(2) ); // "12.35" alert( n.toFixed(0) ); // "12" alert( n.toFixed(5) ); // "12.34500" alert(12.toFixed(1)); // помилка! Можна так: alert( 12..toFixed(1) ); // 12.0
  • 20.
    Запис числа врізних формах: alert( 0xFF ); // 255 шістнадцяткова alert( 3e5 ); // 300000 експоненціальна alert( 0b1010101 ); // 85 двійкова Перетворення в число: var s = "12.34"; alert( +s ); // 12.34 alert( +"12test" ); // NaN alert( '12.34' / "-2" ); // -6.17
  • 21.
    Перетворення числа віншу систему: var n = 255; alert( n.toString(16) ); // ff alert( n.toString(2) ); // 11111111
  • 22.
    Математичні операції округлення Math.floorОкруглює вниз Math.ceil Округлює вгору Math.round Округлює до найближчого цілого alert( Math.floor(3.1) ); // 3 alert( Math.ceil(3.1) ); // 4 alert( Math.round(3.1) ); // 3
  • 23.
    Задача 33 а) Округлітьчисло до другого знаку після десяткової крапки. 3.456  3.46 б) Округліть число до сотень. 3456  3500
  • 24.
    Розв’язок var n1 =3.456; alert( Math.round(n1 * 100) / 100 ); var n2 = 3456; alert( Math.round(n2 / 100) * 100 );
  • 25.
    Деякі математичні методи Math.sin(x)Синус Math.cos(x) Косинус Math.sqrt(x) Квадратний корінь Math.pow(x, exp) xexp Math.abs(x) Абсолютне значення Math.max(a, b, c...) Math.min(a, b, c...) Math.random() випадкове число в інтервалі [0,1)
  • 26.
    Задача 34 а) Напишітькод для генерації випадкового числа від min до max. б) Напишіть код для генерації випадкового цілого числа від min до max (включаючи min і max).
  • 27.
    Розв’язок а) var min =5, max = 10; alert( min + Math.random() * (max - min) ); б)неправильний розв’язок: function randomInteger(min, max) { var rand = min + Math.random() * (max - min) rand = Math.round(rand); return rand; } alert( randomInteger(1, 3) ); // 2 випадає вдвічі частіше, ніж 1 і 3.
  • 28.
    б) один зваріантів правильного розв’язку function randomInteger(min, max) { var rand = min + Math.random() * (max + 1 - min); rand = Math.floor(rand); return rand; }