我只想从此数组字段中获取会话ID值

时间:2019-05-23 11:14:30

标签: javascript arrays string

我可以从此数组字段获取此sessionid吗?

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

5 个答案:

答案 0 :(得分:1)

如果要使用JSESSIONID的值,请分别在;=上分割(如果始终是第一个):

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

答案 1 :(得分:1)

使用拆分方法:

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 :(得分:1)

如果您的JSESSIONID键可能出现在字符串中的任意位置:

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

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

console.log(res);

答案 3 :(得分:0)

String.prototype.split不必要地昂贵(因为它会读取整个字符串并将新的字符串分配并复制到新数组中),而indexOfsubstring则更适合于这样的简单操作:

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 );

答案 4 :(得分:0)

此代码似乎比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