Работа с массивами в javascript

Применение метода объекта String split()

Метод split() можно с успехом применять для ввода массивов с клавиатуры. Ниже на примере демонстрируется одна из возможных реализаций этого подхода:

Листинг: Применение метода ‘split()’

var s = prompt ("Введите несколько числовых значений, разделенных запятыми:", "1,2,5,0,3,7");
var a = s.split(",");
var sum=;
for (var i=; i<a.length; i++)
    sum+=parseInt(ai);
 
alert ("Сумма элементов введенного массива: "+sum);

О функции split() необходимо сказать то, что она поддерживает регулярные выражения, к изучению которых мы вскоре приступим. Это означает, что вместо фиксированной строки-разделителя (например — «,») можно использовать шаблон, маску разделителя. В последнем случае сценарий станет намного эффективнее и универсальнее.

Посимвольное сравнение

Сравнение строк работает лексикографически, иначе говоря, посимвольно.

Сравнение строк и обрабатывается по следующему алгоритму:

  1. Сравниваются первые символы: и . Если они разные, то сравниваем их и, в зависимости от результата их сравнения, возвратить или . Если же они одинаковые, то…
  2. Сравниваются вторые символы и
  3. Затем третьи и и так далее, пока символы не будут наконец разными, и тогда какой символ больше — та строка и больше. Если же в какой-либо строке закончились символы, то считаем, что она меньше, а если закончились в обеих — они равны.

Спецификация языка определяет этот алгоритм более детально. Если же говорить простыми словами, смысл алгоритма в точности соответствует порядку, по которому имена заносятся в орфографический словарь.

"Вася" > "Ваня" // true, т.к. начальные символы совпадают, а потом 'с' > 'н'
"Дома" > "До" // true, т.к. начало совпадает, но в 1-й строке больше символов

Займемся конвертацией

В JavaScript предусмотрено только три вида преобразования типов объектов:

  1. Числовое;
  2. Строковое;
  3. Логическое.

В текущей публикации я расскажу про 2 из них, так как знание о них нужнее для работы со строками.

Числовое преобразование

Чтобы значение элемента явно преобразовать к числовому виду, можно использовать Number (value).

Есть и более короткое выражение: +«999».

Строковая конвертация

Выполняется функцией alert, а также явным вызовом String (text).

1
2
3
alert (999+ " super price") 
var text = String(999)
alert( text === "999" );

На этой ноте я решил закончит свою работу. Подписывайтесь на мой блог и не забывайте делиться ссылкой на него со своими друзьями. Желаю удачи в обучении. Пока-пока!

Прочитано: 233 раз

Значения null и undefined

Ключевое слово null в языке JavaScript имеет специальное назначение и обычно используется для обозначения отсутствия значения. Оператор typeof для значения null возвращает строку «object», что говорит о том, что значение null является специальным «пустым» объектом. Однако на практике значение null обычно считается единственным членом собственного типа и может использоваться как признак отсутствия значения, такого как число, строка или объект. В большинстве других языков программирования имеются значения, аналогичные значению null в JavaScript: вам они могут быть известны как null или nil.

В языке JavaScript имеется еще одно значение, свидетельствующее об отсутствии значения. Значение undefined, указывающее на полное отсутствие какого-либо значения. Оно возвращается при обращении к переменной, которой никогда не присваивалось значение, а также к несуществующему свойству объекта или элементу массива. Кроме того, значение undefined возвращается функциями, не имеющими возвращаемого значения, и присваивается параметрам функций для аргументов, которые не были переданы при вызове.

Идентификатор undefined является именем предопределенной глобальной переменной (а не ключевым словом, как null), которая инициализирована значением undefined. В ECMAScript 3 undefined является переменной, доступной для чтения/записи, которой можно присвоить любое другое значение. Эта проблема была исправлена в ECMAScript 5, и в реализациях JavaScript, соответствующих этому стандарту, переменная undefined доступна только для чтения. Оператор typeof для значения undefined возвращает строку «undefined», показывающую, что данное значение является единственным членом специального типа.

Несмотря на эти отличия, оба значения, null и undefined, являются признаком отсутствия значения и часто являются взаимозаменяемыми. Оператор равенства == считает их равными. (Чтобы отличать их в программе, можно использовать оператор идентичности ===.) Оба они являются ложными значениями — в логическом контексте они интерпретируются как значение false. Ни null, ни undefined не имеют каких-либо свойств или методов. На практике попытка использовать . или [], чтобы обратиться к свойству или методу этих значений, вызывает ошибку TypeError.

Значение undefined можно рассматривать как признак неожиданного или ошибочного отсутствия какого-либо значения, а null — как признак обычного или вполне ожидаемого отсутствия значения. Если в программе потребуется присвоить одно из этих значений переменной или свойству или передать одно из этих значений функции, практически всегда предпочтительнее использовать значение null.

localeCompare()

Этот метод сравнивает строки и возвращает число (отрицательное или положительное), которое говорит, является ли данная строка меньше, равной или больше, чем строка переданная как аргумент, но в зависимости от языка.

Язык определяется настоящим местоположением или вы можете указать его, как второй аргумент:

Очень часто его используют для сортировки массивов:

Где бы вы обычно использовали:

Только тут мы можем это сделать с помощью localeCompare(), который позволит нам работать с алфавитами по всему миру.

Объект переданный как третий аргумент, может быть использован для передачи дополнительных условий. Посмотрите все возможные значения для этих условий на MDN.

Присваивание

Давайте отметим, что в таблице приоритетов также есть оператор присваивания . У него один из самых низких приоритетов: .

Именно поэтому, когда переменной что-либо присваивают, например, , то сначала выполнится арифметика, а уже затем произойдёт присваивание с сохранением результата в .

Тот факт, что является оператором, а не «магической» конструкцией языка, имеет интересные последствия.

Большинство операторов в JavaScript возвращают значение. Для некоторых это очевидно, например сложение или умножение . Но и оператор присваивания не является исключением.

Вызов записывает в и возвращает его.

Благодаря этому присваивание можно использовать как часть более сложного выражения:

В примере выше результатом будет значение, которое присваивается переменной (то есть ). Потом оно используется для дальнейших вычислений.

Забавное применение присваивания, не так ли? Нам нужно понимать, как это работает, потому что иногда это можно увидеть в JavaScript-библиотеках.

Однако писать самим в таком стиле не рекомендуется. Такие трюки не сделают ваш код более понятным или читабельным.

Рассмотрим ещё одну интересную возможность: цепочку присваиваний.

Такое присваивание работает справа налево. Сначала вычисляется самое правое выражение , и затем результат присваивается переменным слева: , и . В конце у всех переменных будет одно значение.

Опять-таки, чтобы код читался легче, лучше разделять подобные конструкции на несколько строчек:

Польза от такого стиля особенно ощущается при быстром просмотре кода.

substr

Метод substr похож на substring и JS slice тем, что выбирает часть строки и возвращает новую. Но вместо того, чтобы указывать начало и конец выбранного отрывка, мы указываем начало отрывка и длину возвращаемой подстроки.

Начальная позиция может быть отрицательной, в таком случае указывается количество символов с конца строки. Если второй аргумент опущен, будут извлечены все символы до конца строки.

Этот метод и поддерживается большим количеством браузеров, но он не стандартизирован в ECMAScript и во многих источниках указывается как устаревший.

Следующий пример демонстрирует использование метода substr для достижения результатов, аналогичных применению методов slice и substring:

var str = 'невероятно';
var str2 = str.substr(2);
console.log(str2); // вероятно

// аргументы: начальный индекс, длина
var str3 = str.substr(2, 2);
console.log(str3); // ве

// отсчёт с конца строки
var str4 = str.substr(-4);
console.log(str4); // ятно

var str5 = str.substr(-4, 2);
console.log(str5); // ят

Пожалуйста, оставьте свои комментарии по текущей теме статьи. За комментарии, отклики, лайки, подписки, дизлайки огромное вам спасибо!

Пожалуйста, опубликуйте свои комментарии по текущей теме статьи. За комментарии, подписки, дизлайки, лайки, отклики низкий вам поклон!

Пожалуйста, оставьте ваши отзывы по текущей теме статьи. За комментарии, дизлайки, подписки, лайки, отклики низкий вам поклон!

МКМихаил Кузнецовавтор-переводчик статьи «JavaScript slice and Other Substring Methods»

replace()

Этот метод находит первое упоминание  в заданной строке и заменяет его на .

Отдаёт новую строку, не трогая оригинальную.

Вы можете передать регулярное выражение как первый аргумент:

 заменяет только первое упоминание, но а если вы будете использовать regex как поиск строки, то вы можете использовать ():

Второй параметр может быть функцией. Эта функция будет вызвана с заданным количеством аргументов, когда найдётся совпадение (или каждое совпадение в случае с regex ):

  • Нужная строка
  • Целое число, которое указывает позицию в строке, где произошло совпадение
  • Строка

Отдающееся значение функции заменит совпадающую часть строки.

Пример:

Это работает и для обычных строк, а не только для регулярок:

В случае c regex, когда выбираются группы, все эти значения будут переданы как аргументы прямо после параметра совпадения.

# What is Splitting?

Splitting is a JavaScript microlibrary with a collection of small designed to split (section off) an element in a variety of ways, such as , , , and !

The Splitting library does not handle any animation, but it gives you the elements and tools needed to create animations & transitions with JavaScript animation libraries or only CSS!. Most plugins utilize a series of s populated with CSS variables and data attributes that empower you to build all kinds of animations, transitions and interactions.

The general flow is:

  1. is called on a (see: )
  2. Create s to inject into , or query children of
  3. Index with CSS variables ( )
  4. Add the total to the target ( )
  5. Return an array of the splits (see: )
  6. Animate those elements with CSS or JavaScript!

Поиск подстроки в строке

Есть два метода для поиска подстроки:

Использование indexOf()
:

Var stringOne = «Johnny Waldo Harrison Waldo»;
var wheresWaldo = stringOne.indexOf(«Waldo»); // 7

indexOf()
метод начинает поиск подстроки с начала строки, и возвращает позицию начала первого вхождения подстроки. В данном случае — 7 позиция.

Использование lastIndexOf()
:

Var stringOne = «Johnny Waldo Harrison Waldo»;
var wheresWaldo = stringOne.lastIndexOf(«Waldo»); // 22

Метод возвращает начальную позицию последнего вхождения подстроки в строку.

В обоих методах, если подстрока не найдена, возвращается значение -1, и оба принимают необязательный второй аргумент, указывающий положение в строке, где вы хотите начать поиск. Таким образом, если второй аргумент «5», indexOf()
начинает поиск с 5 символа, игнорируя символы 0-4, в то время как lastIndexOf()
начинает поиск с символа 5 и идет в обратном направлении, игнорируя символы 6 и дальше.

Метод slice примеры использования

Теория — это конечно круто, но мы изучаем теорию, чтобы применять её на практике.

Создадим переменную, в нее поместим текст «Привет мир!» и к этой переменной применим метод slice и создадим аналогичны пример с тремя разными позициями… 0, 1, 2 и посмотрим, как она сработает…

slice(0)

<script>переменная = «Привет мир!»;  результат = переменная.slice(0); </script> посмотреть результат

slice(1)

<script>переменная = «Привет мир!»;  результат = переменная.slice(1); </script> посмотреть результат

slice(2)

<script>переменная = «Привет мир!»;  результат = переменная.slice(2); </script> посмотреть результатВывод:

Из выше приведенных примеров, мы можем сделать вывод, что если аргумент состоит из одной цифры, то slice возвращает строку начиная с той цифры, что помещена в slice, отсчет начинается с нуля. Т.е. первый элемент находится в ячейке № 0.

string.slice(0) — вернет целую строку — «Привет мир!»

string.slice(1) — «Привет мир!» — вернет «ривет мир!»

string.slice(2) — «Привет мир!» — вернет «ивет мир!»

Теперь используя последний вариант, добавим через запятую endSlice и начнем как обычно с нуля..

slice(2 , 0)

<script>переменная = «Привет мир!»;  результат = переменная.slice(2 , 0); </script> посмотреть результат

slice(2 , -1)

<script>переменная = «Привет мир!»;  результат = переменная.slice(2 , -1); </script> посмотреть результат

slice(2 , -2)

<script>переменная = «Привет мир!»;  результат = переменная.slice(2 , -2); </script> посмотреть результат

Вывод:

string.slice(2 , 0) — вернет пустую строку….

string.slice(2 , -1) — «Привет мир!» — вернет «ивет мир»

string.slice(2 , -2) — «Привет мир!» — вернет «ивет ми»

Числа

В отличие от многих языков программирования, в JavaScript не делается различий между целыми и вещественными значениями. Все числа в JavaScript представляются вещественными значениями (с плавающей точкой). Для представления чисел в JavaScript используется 64-битный формат, определяемый стандартом IEEE 754. Этот формат способен представлять числа в диапазоне от ±1,8 x 10308 до ±5 x 10-324.

В JavaScript целые десятичные числа записываются как последовательность цифр. Помимо десятичных целых литералов JavaScript распознает шестнадцатеричные значения. Шестнадцатеричные литералы начинаются с последовательности символов «0x», за которой следует строка шестнадцатеричных цифр. Шестнадцатеричная цифра — это одна из цифр от 0 до 9 или букв от A до F, представляющих значения от 10 до 15:

Литералы вещественных чисел должны иметь десятичную точку — при определении таких литералов используется традиционный синтаксис вещественных чисел. Вещественное значение представляется как целая часть числа, за которой следуют десятичная точка и дробная часть числа.

Литералы вещественных чисел могут также представляться в экспоненциальной нотации: вещественное число, за которым следует буква e (или E), а затем необязательный знак плюс или минус и целая экспонента. Такая форма записи обозначает вещественное число, умноженное на 10 в степени, определяемой значением экспоненты:

Арифметические операции

Обработка чисел в языке JavaScript выполняется с помощью арифметических операторов. В число таких операторов входят: оператор сложения +, оператор вычитания — , оператор умножения *, оператор деления / и оператор деления по модулю % (возвращает остаток от деления).

Помимо этих простых арифметических операторов JavaScript поддерживает более сложные математические операции, с помощью функций и констант, доступных в виде свойств объекта Math:

Арифметические операции в JavaScript не возбуждают ошибку в случае переполнения, потери значащих разрядов или деления на ноль. Если результат арифметической операции окажется больше самого большого представимого значения (переполнение), возвращается специальное значение «бесконечность», которое в JavaScript обозначается как Infinity. Аналогично, если абсолютное значение отрицательного результата окажется больше самого большого представимого значения, возвращается значение «отрицательная бесконечность», которое обозначается как -Infinity.

Эти специальные значения, обозначающие бесконечность, ведут себя именно так, как и следовало ожидать: сложение, вычитание, умножение или деление бесконечности на любое значение дают в результате бесконечность (возможно, с обратным знаком).

Потеря значащих разрядов происходит, когда результат арифметической операции оказывается ближе к нулю, чем минимально возможное значение. В этом случае возвращается число 0. Если потеря значащих разрядов происходит в отрицательном результате, возвращается специальное значение, известное как «отрицательный ноль». Это специальное значение практически ничем не отличается от обычного нуля, и у программистов на JavaScript редко возникает необходимость выделять его.

Деление на ноль не считается ошибкой в JavaScript: в этом случае просто возвращается бесконечность или отрицательная бесконечность. Однако есть одно исключение: операция деления нуля на ноль не имеет четко определенного значения, поэтому в качестве результата такой операции возвращается специальное значение «не число» (not-a-number), которое обозначается как NaN. Значение NaN возвращается также при попытке разделить бесконечность на бесконечность, извлечь квадратный корень из отрицательного числа или выполнить арифметическую операцию с нечисловыми операндами, которые не могут быть преобразованы в числа.

В JavaScript имеются предопределенные глобальные переменные Infinity и NaN, хранящие значения положительной бесконечности и «не число». В стандарте ECMAScript 3 эти переменные доступны для чтения/записи и могут изменяться в программах. Стандарт ECMAScript 5 исправляет эту оплошность и требует, чтобы эти переменные были доступны только для чтения.

Как найти подстроку

includes

Проверяет, содержит ли строка указанную подстроку. Возвращает значение true или false. Вторым параметром можно указать позицию в строке, с которой следует начать поиск.

indexOf

Возвращает индекс первого найденного вхождения указанного значения. Поиск ведётся от начала до конца строки. Если совпадений нет, возвращает -1. Вторым параметром можно передать позицию, с которой следует начать поиск.

lastIndexOf

Возвращает индекс последнего найденного вхождения указанного значения. Поиск ведётся от конца к началу строки. Если совпадений нет, возвращает -1. Вторым параметром можно передать позицию, с которой следует начать поиск.

endsWith

Проверяет, заканчивается ли строка символами, заданными первым параметром. Возвращает true или false. Есть второй необязательный параметр — ограничитель по диапазону поиска. По умолчанию он равен длине строки.

startsWith

Проверяет, начинается ли строка с указанных символов. Возвращает true или false. Вторым параметром можно указать индекс, с которого следует начать проверку.

JS Уроки

JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS ScopeJS EventsJS StringsJS String MethodsJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop WhileJS BreakJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS DebuggingJS HoistingJS Strict ModeJS this KeywordJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved WordsJS VersionsJS Version ES5JS Version ES6JS JSON

Pattern Matching

Соответствие по шаблону в строке может быть использовано с помощью 2-х методов, которые работают по-разному.

Метод match()
применяется к строке и он принимает в качестве параметра регулярное выражение:

Var myString = «How much wood could a wood chuck chuck»;
var myPattern = /.ood/;
var myResult = myString.match(myPattern); //
var patternLocation = myResult.index; // 9
var originalString = myResult.input // «How much wood could a wood chuck chuck»

Метод exec()
применяется к объекту регулярного выражения и принимает в качестве параметра строку:

Var myString = «How much wood could a wood chuck chuck»;
var myPattern = /.huck/;
var myResult = myPattern.exec(myString); //
var patternLocation = myResult.index; // 27
var originalString = myResult.input // «How much wood could a wood chuck chuck»

В обоих методах возвращается лишь первое совпадение. Если совпадений не было — возвращается null.

Так же можно использовать метод search()
, который принимает регулярное выражение и возвращает позицию первого совпадения по шаблону:

Var myString = «Assume»;
var patternLocation = myString.search(/ume/); // 3

Если совпадений не было — возращается «-1
«.

Метод slice()

извлекает часть строки и возвращает извлеченную часть в новой
строке.

Метод принимает 2 параметра: начальную позицию и конечную позицию (конечная позиция не включена).

В этом примере вырезается часть строки из позиции 7 в позицию 12 (13-1):

var str = «Apple, Banana, Kiwi»;
var res = str.slice(7, 13);

Результат res будет:

Помните: JavaScript считает позиции с нуля. Первая позиция 0.

Если параметр отрицательный, позиция отсчитывается от конца строки.

Этот пример вырезает часть строки из позиции -12 в позицию -6:

var str = «Apple, Banana, Kiwi»;
var res = str.slice(-12, -6);

Результат res будет:

Если вы опустите второй параметр, метод будет вырезать остальную часть строки:

var res = str.slice(7);

или считая с конца:

Как извлечь подстроку

slice

Извлекает часть строки и возвращает новую строку. Обязательный параметр — начало извлечения. Вторым параметром можно установить границу (по умолчанию — до конца строки).

substring

Извлекает символы из строки между двумя указанными индексами. Второй индекс указывать не обязательно. В таком случае будут извлечены все символы от начала до конца строки. В отличие от slice, можно задавать start больше, чем end. Отрицательные значения не поддерживаются, они интерпретируются как 0.

substr

Извлекает часть строки указанной длины. Первым параметром принимает стартовую позицию, вторым — длину. Значение первого параметра может быть отрицательным, тогда позиция определяется с конца строки.

7

Сравнение строк в JavaScript

Строки в JS сравниваются посимвольно в алфавитном порядке.

Особенности посимвольного сравнения строк в JS:

  1. Символы сравниваются по их кодам (больший код — больший символ, все строчные буквы идут после (правее) заглавных, так как их коды больше (‘a’ > ‘Z’  // 97>65 true) ;
  2. Буквы, имеющие диакритические знаки, идут «не по порядку» ( ‘Österreich’ > ‘Zealand’ );

Для получения символа по его коду (и наоборот) используется методы:

  • codePointAt(pos), который возвращает код Unicode для символа, находящегося на позиции pos;
  • charCodeAt(pos), который возвращает числовое значение Unicode UTF-16 для символа по указанному индексу (за исключением кодовых точек Unicode, больших 0x10000).
  • String.fromCodePoint(code) — создаёт символ по его коду code

JavaScript

// одна и та же буква в нижнем и верхнем регистре будет иметь разные коды
alert( «z».codePointAt(0) ); // 122
alert( «Z».codePointAt(0) ); // 90

// Создание символа по его коду code
alert( String.fromCodePoint(90) ); // Z

// Добавление юникодного символа по коду, используя спецсимвол \u
alert( ‘\u005a’ ); // Z

1
2
3
4
5
6
7
8
9

// одна и та же буква в нижнем и верхнем регистре будет иметь разные коды

alert(«z».codePointAt());// 122

alert(«Z».codePointAt());// 90

 
// Создание символа по его коду code

alert(String.fromCodePoint(90));// Z

 
// Добавление юникодного символа по коду, используя спецсимвол \u

alert(‘\u005a’);// Z

Выведем строку, содержащую символы с кодами от 65 до 90 — это латиница (символы заглавных букв):

JavaScript

let str_1 = «»;

for (let i = 65; i <= 90; i++) {
  str_1 += String.fromCodePoint(i);
}
console.log(str_1); // ABCDEFGHIJKLMNOPQRSTUVWXYZ

1
2
3
4
5
6

let str_1 = «»;

for (let i = 65; i <= 90; i++) {

  str_1 += String.fromCodePoint(i);

}

console.log(str_1);// ABCDEFGHIJKLMNOPQRSTUVWXYZ

Правильное сравнение строк (метод str1.localeCompare(str2))

Вызов метода str1.localeCompare(str2) возвращает число, которое показывает, какая строка больше в соответствии с правилами языка:

  • Отрицательное число, если str1 меньше str2.
  • Положительное число, если str1 больше str2.
  • 0, если строки равны.

JavaScript

let str_1 = ‘Alex’.localeCompare(‘NAV’);
console.log(str_1); // -1
let str_2 = ‘Alex’.localeCompare(‘Alex’);
console.log(str_2); // 0

1
2
3
4

let str_1=’Alex’.localeCompare(‘NAV’);

console.log(str_1);// -1

let str_2=’Alex’.localeCompare(‘Alex’);

console.log(str_2);// 0

Создание строк

Строки создаются при помощи двойных или одинарных кавычек:

var text = "моя строка";

var anotherText = 'еще строка';

var str = "012345";

В JavaScript нет разницы между двойными и одинарными кавычками.

Специальные символы

Строки могут содержать специальные символы. Самый часто используемый из таких символов — это «перевод строки».

Он обозначается как , например:

alert( 'Привет\nМир' ); // выведет "Мир" на новой строке

Есть и более редкие символы, вот их список:

Символ Описание
\b Backspace
\f Form feed
\n New line
\r Carriage return
\t Tab
\uNNNN Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` — юникодное представление символа копирайт

Экранирование специальных символов

Если строка в одинарных кавычках, то внутренние одинарные кавычки внутри должны быть экранированы, то есть снабжены обратным слешем , вот так:

var str = '*!*I\'m*/!* a JavaScript programmer';

В двойных кавычках — экранируются внутренние двойные:

var str = "I'm a JavaScript \"programmer\" ";
alert( str ); // I'm a JavaScript "programmer"

Экранирование служит исключительно для правильного восприятия строки JavaScript. В памяти строка будет содержать сам символ без . Вы можете увидеть это, запустив пример выше.

Сам символ обратного слэша является служебным, поэтому всегда экранируется, т.е пишется как :

var str = ' символ \\ ';

alert( str ); // символ \

Заэкранировать можно любой символ. Если он не специальный, то ничего не произойдёт:

alert( "\a" ); // a
// идентично alert(  "a"  );

Методы и свойства

Здесь мы рассмотрим методы и свойства строк, с некоторыми из которых мы знакомились ранее, в главе info:properties-and-methods.

Длина length

Одно из самых частых действий со строкой — это получение ее длины:

var str = "My\n"; // 3 символа. Третий - перевод строки

alert( str.length ); // 3

Доступ к символам

Чтобы получить символ, используйте вызов . Первый символ имеет позицию :

var str = "jQuery";
alert( str.charAt() ); // "j"

В JavaScript нет отдельного типа «символ», так что возвращает строку, состоящую из выбранного символа.

Также для доступа к символу можно использовать квадратные скобки:

var str = "Я - современный браузер!";
alert( str ); // "Я"

Разница между этим способом и заключается в том, что если символа нет — выдает пустую строку, а скобки — :

alert( "".charAt() ); // пустая строка
alert( ""  ); // undefined

Вообще же метод существует по историческим причинам, ведь квадратные скобки — проще и короче.

Изменения строк

Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана — она такая навсегда.

Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:

var str = "строка";

str = str3 + str4 + str5;

alert( str ); // ока

Смена регистра

Методы и меняют регистр строки на нижний/верхний:

alert( "Интерфейс".toUpperCase() ); // ИНТЕРФЕЙС

Пример ниже получает первый символ и приводит его к нижнему регистру:

alert( "Интерфейс" .toLowerCase() ); // 'и'

Поиск подстроки

Он возвращает позицию, на которой находится или , если ничего не найдено. Например:

var str = "Widget with id";

alert( str.indexOf("Widget") ); // 0, т.к. "Widget" найден прямо в начале str
alert( str.indexOf("id") ); // 1, т.к. "id" найден, начиная с позиции 1
alert( str.indexOf("widget") ); // -1, не найдено, так как поиск учитывает регистр

Необязательный второй аргумент позволяет искать, начиная с указанной позиции. Например, первый раз появляется на позиции . Чтобы найти его следующее появление — запустим поиск с позиции :

var str = "Widget with id";

alert(str.indexOf("id", 2)) // 12, поиск начат с позиции 2

Поиск всех вхождений

Чтобы найти все вхождения подстроки, нужно запустить в цикле. Как только получаем очередную позицию — начинаем следующий поиск со следующей.

Пример такого цикла:

var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке
var target = "Иа"; // цель поиска

var pos = ;
while (true) {
  var foundPos = str.indexOf(target, pos);
  if (foundPos == -1) break;

  alert( foundPos ); // нашли на этой позиции
  pos = foundPos + 1; // продолжить поиск со следующей
}

Такой цикл начинает поиск с позиции , затем найдя подстроку на позиции , следующий поиск продолжит с позиции , и так далее, пока что-то находит.

Впрочем, тот же алгоритм можно записать и короче:

var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке
var target = "Иа"; // цель поиска

*!*
var pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
  alert( pos );
}
*!*

Взятие подстроки: substring, substr, slice

В JavaScript существуют целых 3 (!) метода для взятия подстроки, с небольшими отличиями между ними.

: Метод возвращает подстроку с позиции до, но не включая .

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

– Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью . Для примитивных значений работает очевидным образом.

– Происходит в математических операциях. Может быть вызвано с помощью .

Преобразование подчиняется правилам:

Значение Становится…
Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем , иначе из непустой строки «считывается» число. При ошибке результат .

– Происходит в логических операциях. Может быть вызвано с помощью .

Подчиняется правилам:

Значение Становится…
, , , ,
любое другое значение

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • при численном преобразовании становится , не .
  • и строки из одних пробелов типа при логическом преобразовании всегда .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: