2015-02-07 2 views
1

У меня есть 1 Строка переменной в JavaScript, который содержит 3 значений, разделенных запятыми, как показано ниже:Получение всех значений из разделенных запятыми в Javascript

var session = "[email protected],123456,f_id=8"; 

Я хочу, чтобы получить все выше 3 разделенных запятыми значений в 3-х различных переменных. До сих пор я достиг последнего значения, разделенного запятой, в переменной elem2 и получая другие 2 значения, разделенные запятыми 1 и 2 в переменной elem1.

var elem1 = session.split(","); 

var elem2 = elem1.pop(); 

document.write("elem1 = "+elem1+"<br/>elem2 = "+elem2); 

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

elem1 = [email protected] 
elem2 = 123456 
elem3 = f_id=8 
+0

вы можете ждать ES6 и может сделать [] Уничтожение того назначения (https: //developer.mozilla. org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) следующим образом: 'var [email, number, id] = session.split (", ")' – Grundy

ответ

5

Вы могли бы попробуйте следующее:

// Initially, we split are comma separated string value on commas. 
// In the values an array of these values is stored. 
var values = session.split(","); 
// Then we get each value based on it's position in the array. 
var email = values[0]; 
var number = values[1]; 
var id = values[2]; 

В качестве побочного примечания я бы предложил использовать значащие имена для ваших переменных, как указано выше. Имена elem1, elem2 и elem3 немного расплывчаты, и в будущем эти названия могут скрывать даже вас, не говоря уже о другом читателе вашего кода.

+0

Спасибо вам большое. вы - смакуя жизнь, это работает. –

+0

@JohnSmith приветствую чувака! Я рад, что помог. – Christos

+0

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

0

Вы также можете сохранить данные сеанса в JavaScript Object. Ниже выполняется итерация через каждую разделяемую строку и добавляется к объекту.

var myData = {}; 

// ... 

for(var i = 0, x = session.split(","); i < x.length; i++) { 
    switch(i) { 
     case 0: myData.email = x[i]; break; 
     case 1: myData.number = x[i]; break; 
     case 2: myData.f_id = x[i]; break; 
    } 
} 

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

И так далее. Это форма JSON Notation. Результат будет выглядеть так:

[ 
    { 
     email: "[email protected]", 
     number: "123456", 
     f_id: "f_id=8" 
    }, 
    { 
     // Another session, etc. 
    } 
] 
0

Вы также можете использовать string.replace с обратным вызовом в качестве параметра. Очень гибкий!

Проверить это для получения дополнительной информации: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

Для вашего USECASE вы можете закончить с:

function writeParts(match, email, number, id, offset, string) { 
    document.write("email = "+email+"<br/>number = "+number); 
} 
// match not-comma followed by a comma (three times) 
session.replace(/([^,]+),([^,]+),([^,]+)/, writeParts); 
Смежные вопросы