Я хочу получить только значение идентификатора сессии из этого поля массива - PullRequest
0 голосов
/ 23 мая 2019

Можно ли получить этот sessionid из этого поля массива?

var data =  ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9; Path=/sample/; 
Secure; HttpOnly']

Ответы [ 5 ]

2 голосов
/ 23 мая 2019

Использовать метод разделения:

var data =  ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9;Path=/sample/;Secure; HttpOnly']
var item = data[0].split("=");
var sessionId = item[1].split(";");
console.log(sessionId[0]);

sessionId[0] с желаемым полем, т.е. sessionid.

Теперь, если вы хотите JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9, тогда вам просто нужно split(";"), тогда вы можете получить это поле.

var data =  ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9;Path=/sample/;Secure; HttpOnly']
var item = data[0].split(";");
console.log(item[0])

Поэтому элемент [0] дал этот результат (JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9)

2 голосов
/ 23 мая 2019

Если вам нужно значение JSESSIONID, разделите на ; и = (если оно всегда первое):

var data = ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9; Path=/sample/; Secure; HttpOnly'];
const [, sessionId] = data[0].split(";")[0].split("=");
console.log(sessionId);
1 голос
/ 23 мая 2019

этот код кажется быстрее, чем split() функция

var data = ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9;Path=/sample/;Secure; HttpOnly'];

var dataItem = data[0];
var eqIndex = dataItem.indexOf("=");
var scIndex = dataItem.indexOf(";", eqIndex+1);
var sessionId = dataItem.substring(eqIndex+1, scIndex);

Выход:

CE04D3A4F9A930F7716ABD1CF1D7E4A9

тест:

http://jsben.ch/rkGwP

benchmark

1 голос
/ 23 мая 2019

Если ваша клавиша JSESSIONID может появиться в любом месте строки:

const data =  ['JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9; Path=/sample/; Secure; HttpOnly'];

const res = data[0]
  .split('; ')
  .map(item => item.split('='))
  .find(item => item[0] == 'JSESSIONID')[1];

console.log(res);
1 голос
/ 23 мая 2019

String.prototype.split неоправданно дорог (поскольку он читает всю строку и выделяет + копирует новые строки в новый массив), тогда как indexOf с substring лучше для более простых операций, таких как:

let d = data[0];
let startIdx = d.indexOf( 'JSESSIONID=' );
if( startIdx == -1 ) throw "not found";l
let endIdx = d.indexOf( ';', startIdx + 11 );
let sessionId = d.substring( startIdx + 11, endIdx );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...