Javascript split for var

Is there a nicer/elegant way to assign JavaScript split values to variables?

Agreed, this is really the only improvement that can be made, though I don’t think it’s what the OP intended. Note that you can also lose the second var .

Nope, notice that there is no ; after the first line — it means that you continue declaring variables and can omit var on each line.

In my opinion it’s nicer not to repeat the var keyword. So:

var values = resp.split(':'), delta = values[0], newvalue = values[1], admin = values[2]; 

(With or without the linebreaks after the commas, and with or without aligning the equals signs.)

But there’s little else you can do to pretty it up.

Unless you’re willing to do something silly using a helper function like this:

function assignFromArray(vars, vals) < for (var i=0; iassignFromArray(["delta","newValue","admin"], resp.split(":")); 

(Which of course only works for global variables, though it would be easy enough to create properties on some local object for non-global scope.)

You could avoid using an explicit index, and just order the declarations accordingly. Could of course also be done with a single var keyword.

It is easier to change and expand, since you probably want to have the declaration in the order of appearance in the array anyway.

var values = resp.split(':'); var delta = values.shift(); var newvalue = values.shift(); var admin = values.shift(); 
var values = resp.split(':'), delta = values.shift(), newvalue = values.shift(), admin = values.shift(); 

+1. I think this is the nicest variation, though I'd prefer it with the suggested single var statement.

@lonesomeday - In this case we know the array only holds three values though, so the speed (or lack thereof) is not going to be noticed by the user even if later extended to ten values, or twenty. (Though I assume it would be faster to assign the variables in reverse order and use .pop() ?)

Very true. And if you need to extract data into twenty different variables, you have a bigger problem!

Use a nice little assign() function to associate values with keys in a new object. Then, the object is returned:

var assign = function(values, keys) < var i, vmax, kmax, output = <>; for(i=0, vmax=values.length, kmax=keys.length; i return output; >; var result = assign(["bar","beer"], ["foo","free"]); console.log(result); // returns < "foo" : "bar", "free" : "beer" >accessed as result.foo and result.free 

I'd suggest making output an optional third parameter so that you can choose whether to extend/update an existing option or create a new one.

Читайте также:  Javascript insertbefore script tag

That would be encompassing too much logic into the function. Write an extend function for that and just wrap it around.

No, it's not too much more "code." Mind you, I come from a C background, so these things are non-sequitur and are generally separated. Either would work.

var values = resp.split(':'); for(var i=0; i

To get rid of the array, you could try something like this:

var delta = resp.substring(0, resp.indexOf(':')), newvalue = resp.substring(resp.indexOf(':') + 1, resp.lastIndexOf(':')), admin = resp.substring(resp.lastIndexOf(':') + 1, resp.length); 

Don't worry, I'm not expecting an accepted answer! 🙂 Just trying to present another way of looking at things.

Alternative viewpoints are always good, but this isn't going to cope too well if a fourth variable is introduced.

Yes, I did think of that. The only way would be to do resp = resp.substring(resp.indexOf(':')); after each assignment, but then it'd just get messy. Still, I have found substring / substr combined with indexOf very useful in slightly different situations in the past where I don't want to resort to RegExp .

Also, this is by far the quickest method here. split is really slow, I assume because it converts the string into a RegExp before processing.

To adapt for more values in the string you don't need to keep changing resp each time: .indexOf() takes an optional second parameter that is the index to start searching from, so add a temporary variable to store the index (which would also avoid your current repeated call to .indexOf() to find the same value), and then the next call can be resp.indexOf(":",prevIndex+1) . As for the speed of .split() - I wouldn't worry unless I actually noticed the page lagging, because the .split() -based code is a lot clearer. Splitting a string into 3 (or 10, or 20) pieces isn't noticeably slow.

Oh yes, I'd forgotten about that second argument. And no, split isn't noticeably slow, even though indexOf is several times faster. it's purely academic 🙂

Источник

String.prototype.split()

Метод split() разбивает объект String на массив строк путём разделения строки указанной подстрокой.

Синтаксис

Параметры

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

Необязательный параметр. Целое число, определяющее ограничение на количество найденных подстрок. Метод split() всё равно разделяет строку на каждом сопоставлении с разделителем separator , но обрезает возвращаемый массив так, чтобы он содержал не более limit элементов.

Описание

Метод split() возвращает новый массив.

Если разделитель separator найден, он удаляется из строки, а подстроки возвращаются в массиве. Если разделитель опущен, массив будет содержать только один элемент, состоящий из всей строки. Если разделитель является пустой строкой, строка str будет преобразована в массив символов.

Если разделитель является регулярным выражением, содержащим подгруппы, то каждый раз при сопоставлении с разделителем, результаты (включая те, что не определены) захвата подгруппы будут помещаться внутрь выходного массива. Однако, не все браузеры поддерживают эту возможность.

Читайте также:  JavaScript Alert Box by PHP

Примечание: Если строка является пустой строкой, метод split() вернёт массив, состоящий из одной пустой строки, а не пустой массив.

Примеры

Пример: использование метода split()

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

function splitString(stringToSplit, separator)  var arrayOfStrings = stringToSplit.split(separator); console.log('Оригинальная строка: "' + stringToSplit + '"'); console.log('Разделитель: "' + separator + '"'); console.log('Массив содержит ' + arrayOfStrings.length + ' элементов: ' + arrayOfStrings.join(' / ')); > // Строчка из «Бури» Шекспира. Перевод Михаила Донского. var tempestString = 'И как хорош тот новый мир, где есть такие люди!'; var monthString = 'Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек'; var space = ' '; var comma = ','; splitString(tempestString, space); splitString(tempestString); splitString(monthString, comma); 

Пример сгенерирует следующий вывод:

Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: " " Массив содержит 10 элементов: И / как / хорош / тот / новый / мир, / где / есть / такие / люди! Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" Разделитель: "undefined" Массив содержит 1 элементов: И как хорош тот новый мир, где есть такие люди! Оригинальная строка: "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек" Разделитель: "," Массив содержит 12 элементов: Янв / Фев / Мар / Апр / Май / Июн / Июл / Авг / Сен / Окт / Ноя / Дек

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

В следующем примере метод split() ищет 0 или более пробелов, за которыми следует точка с запятой, за которой снова следуют 0 или более пробелов, и, если этот шаблон найден, удаляет пробелы из строки. Переменная nameList является массивом, возвращённым в результате работы метода split() .

var names = 'Гарри Трамп ;Фрэд Барни; Хелен Ригби ; Билл Абель ;Крис Ханд '; console.log(names); var re = /\s*;\s*/; var nameList = names.split(re); console.log(nameList); 

Пример напечатает две строки; на первой строке напечатана оригинальная строчка, а на второй — получившийся массив.

Гарри Трамп ;Фред Барни; Хелен Ригби ; Билл Абель ;Крис Ханд Гарри Трамп,Фред Барни,Хелен Ригби,Билл Абель,Крис Ханд

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

В следующем примере метод split() ищет 0 или более пробелов в строке и возвращает первые три найденных подстроки.

var myString = 'Привет, мир. Как дела?'; var splits = myString.split(' ', 3); console.log(splits); 

Вывод скрипта будет следующим:

Пример: захват подгрупп

Если параметр separator содержит подгруппы, сопоставившиеся результаты также будут присутствовать в возвращённом массиве.

var myString = 'Привет 1 мир. Предложение номер 2.'; var splits = myString.split(/(\d)/); console.log(splits); 

Вывод скрипта будет следующим:

,1, мир. Предложение номер ,2,. 

Пример: обращение строки при помощи метода split()

var str = 'фывапролд'; var strReverse = str.split('').reverse().join(''); // 'длорпавыф' // split() возвращает массив, к которому применяются методы reverse() и join() 

Бонус: используя оператор === (en-US), можно проверить, являлась ли строка палиндромом.

Спецификации

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

This page was last modified on 4 дек. 2022 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

Our communities

Developers

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Источник

split()

split() - метод разбивает строку на массив строк используя для этого заданный разделитель.

Синтаксис

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

limit - количество элементов, которые должен вернуть метод. Параметр необязательный, если пропустить в массив попадут все подстроки. Если задать, то split() все-равно разделит всю строку по разделителям, но возвратит только указанное количество.

При нахождении разделителя метод удаляет separator и возвращает подстроку.

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

Если при записи split() пропустить separator , то метод вернет массив с одним элементом, который будет содержать всю строку.

Разбить строку по разделителю

 let mySkills = 'Native JavaScript-React-HTML-CSS' mySkills = mySkills.split('-', 2) console.log(mySkills) 

Результатом будет массив с двумя элементами: Native JavaScript и React

Разбить строку на символы

 let myDream = 'Хочу стать frontend разработчиком' let allSymbols = myDream.split('') for (let n = 0; n

Здесь мы разделили строку myDream с помощью split('') , задав в качестве separator пустое значение. Все это записали в allSymbols - теперь там массив, где каждый элемент это символ нашей строки. Далее используя цикл for вывели в console все символы - каждый с новой строки.

Разбить строку используя регулярное выражение

 let topProgramLang = 'JavaScript-Python-Java-C++,PHP,C,C#' topProgramLang = topProgramLang.split(/,|-/) console.log(topProgramLang) 

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

Вывести символы строки в обратном порядке

 let importanceSkills = 'React,TypeScript,CSS,HTML,JavaScript' importanceSkills = importanceSkills.split(',') importanceSkills = importanceSkills.reverse() importanceSkills = importanceSkills.join(', ') console.log(importanceSkills) 

Для того, чтобы решить эту задачу нам понадобятся еще два метода reverse() и join() . Первый перевернет массив, а второй объединит элементы в строку. В итоге получим в console JavaScript, HTML, CSS, TypeScript, React

Сумма элементов массива

 let numForSum = '1,2,5,10,392,19,3,10' numForSum = numForSum.split(',') let sumNum = 0 for (let n = 0; n < numForSum.length; n++) < sumNum += +(numForSum[n]) >console.log(sumNum) 

Выполняя подобные задачи стоит помнить, что метод split() записывает данные в массив в формате строки, поэтому перед тем, как складывать элементы необходимо сначала привести их к числу. Здесь это сделано с помощью + перед выражением. Также можно воспользоваться функцией Number(numForSum[n]) .

Итого

1. Метод split() делит строку по разделителю и записывает все в массив.

2. В получившемся массиве, элементы хранятся в формате текст.

3. В параметрах метода, первым свойством задается разделитель, вторым ограничение на вывод элементов. Оба параметра не обязательны.

Skypro - научим с нуля

Источник

Оцените статью