【问题标题】:I want to get only session id value from this array field我只想从此数组字段中获取会话 ID 值
【发布时间】:2019-05-23 11:14:30
【问题描述】:

我可以从这个数组字段中获取这个 sessionid 吗?

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

【问题讨论】:

  • 发布您尝试过的代码。
  • 您是否尝试过在“;”上进行拆分获取字符串的各个部分?
  • 获取索引 0 处的数组值,将其拆分为 ;并获得第一个值。拆分 = 获取索引 1。
  • data[0].split(/[=;]/g)[1]

标签: javascript arrays string


【解决方案1】:

如果您想要JSESSIONID 的值,请拆分;=(如果它总是第一个):

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

【讨论】:

  • 我如何获得 JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9 这个东西
  • @susmithapanda 你只需要用“;”分割。
【解决方案2】:

使用拆分方法:

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

所以 item[0] 给出了这个结果 (JSESSIONID=CE04D3A4F9A930F7716ABD1CF1D7E4A9)

【讨论】:

  • 这将返回CE04D3A4F9A930F7716ABD1CF1D7E4A9;Path
【解决方案3】:

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

【讨论】:

  • 即使是 RegEx split() doesn't seem 的工作速度也会慢得多,我怀疑这个任务值得 5 行代码,你可以在其中简单地执行 split(/[=;]/g)[1]
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    如果您的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);

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多