如何从_gaexp Cookie中提取18961前的ID且排除GAX1.3前缀
问题原因
首次循环的id带GAX1.3.前缀,是因为第一个片段的id前拼接了Cookie的固定头部,你原逻辑只做了按optimizeID拆分,没有处理开头的固定前缀。
最优实现方案
推荐用正则匹配提取,逻辑更简洁稳定,不需要多层拆分,也兼容格式波动:
const gaexp = readCookie("_gaexp"); // 正则匹配所有 【ID.数字.变体】 结构的片段,自动跳过开头GAX1.3前缀 const reg = /([A-Za-z0-9_-]+)\.(\d+)\.([A-Za-z0-9]+)/g; let match; while ((match = reg.exec(gaexp)) !== null) { const id = match[1]; const optimizeID = match[2]; const variantID = match[3]; console.log("variantID", variantID); console.log("id", id); }
输出结果完全符合预期:
variantID ss12 id yK3HnOfSRZCVUMNkK3tVCA variantID 0 id QV1ffpISQcCGmM4IOTuUlQ variantID 1 id F9l4roGRR5K03cSaZMWQiA
如果你希望在原有代码基础上最小改动,只需要对id做统一前缀去除即可,同时把optimizeID提到循环外避免重复计算:
let read = readCookie("_gaexp").split("!"); const optimizeID = read[0].split('.')[3]; read.forEach(function(key, index) { let variantID = key.split(optimizeID+".")[1]; let id = key.split("."+optimizeID)[0]; id = id.replace(/^GAX1\.3\./, ''); console.log("variantID", variantID); console.log("id", id); });
内容的提问来源于stack exchange,提问作者Reena Verma
相关产品推荐
相关产品推荐

