【问题标题】:Get cookie by name按名称获取 cookie
【发布时间】:2012-05-30 14:47:34
【问题描述】:

我有一个 getter 从 cookie 中获取值。

现在我有 2 个名为 shares= 和名为 obligations= 的 cookie。

我想让这个 getter 只是为了从义务 cookie 中获取值。

我该怎么做?因此for 将数据拆分为单独的值并将其放入数组中。

 function getCookie1() {
    // What do I have to add here to look only in the "obligations=" cookie? 
    // Because now it searches all the cookies.

    var elements = document.cookie.split('=');
    var obligations= elements[1].split('%');
    for (var i = 0; i < obligations.length - 1; i++) {
        var tmp = obligations[i].split('$');
        addProduct1(tmp[0], tmp[1], tmp[2], tmp[3]);
    }
 }

【问题讨论】:

标签: javascript cookies


【解决方案1】:

避免遍历数组的一种方法是:

function getCookie(name) {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}

演练

如果在字符串中不存在token,则通过token拆分字符串将产生一个具有一个字符串(相同值)的数组,或者如果在一个字符串中找到token,则生成一个具有两个字符串的数组。

第一个(左)元素是令牌之前的字符串,第二个(右)是令牌之后的字符串。

(注意:如果字符串以记号开头,则第一个元素为空字符串)

考虑到 cookie 的存储方式如下:

"{name}={value}; {name}={value}; ..."

为了检索特定的 cookie 值,我们只需要获取 "; {name}=" 之后和下一个 ";" 之前的字符串。在我们进行任何处理之前,我们在 cookie 字符串前面加上“;”,这样每个 cookie 名称,包括第一个,都用“;”和“=”:

"; {name}={value}; {name}={value}; ..."

现在,我们可以先用 "; {name}=" 分割,如果在 cookie 字符串中找到 token(即我们有两个元素),我们最终会得到第二个元素,它是以我们的 cookie 开头的字符串价值。然后我们从一个数组(即pop)中取出它,并重复相同的过程,但现在使用“;”作为令牌,但这次拉出左边的字符串(即移位)以获得实际的令牌值。

【讨论】:

  • @user3132564 试图编辑它,但它实际上是一条评论:当您搜索 cookie 的后缀时,此方法返回错误的值 - 如果 document.cookie 的值为“FirstName=John " 并且你调用 getCookie("Name"),即使没有那个名字的 cookie,你也会得到 "John"。如果一个 cookie 的名称是另一个 cookie 的后缀,它也不起作用 - 如果 document.cookie 是 "Name=John; LastName=Doe",调用 split("Name=") 会返回一个包含三个字符串的数组,而该方法不会t 为 getCookie("Name") 返回正确的值。
  • 关于此答案中实施的警告:如果有多个同名 cookie,则不会返回任何 cookie 值。例如,如果为域 .stackexchange.com 和程序员.stackexchange.com 设置了一个名为 stackToken 的 cookie,那么如果您调用 getCookie("stackToken"),则不会返回任何值——parts.length 将大于 2。如果您知道相同名称(但域和路径不同)的所有 cookie 值将相同,请在此处查看接受的答案:stackoverflow.com/questions/5639346/…
  • @DennisJaheruddin - 后缀问题似乎已修复。
  • @NathanJ.Brauer 你是对的。很久以前就已更新以解决该问题,但仅在更改日志中而不是在 cmets 中进行了注释。
  • 至于性能:我为提供的解决方案设置了一个 jsperf 测试:jsperf.com/getcookie-performance。不同浏览器的性能差异很大。
【解决方案2】:

我希望在 cookie 上使用单个正则表达式匹配:

window.getCookie = function(name) {
  var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  if (match) return match[2];
}

或者我们也可以作为一个函数使用,检查下面的代码。

function check_cookie_name(name) 
    {
      var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
      if (match) {
        console.log(match[2]);
      }
      else{
           console.log('--something went wrong---');
      }
   }

感谢 cmets 中的 Scott Jungwirth。

【讨论】:

  • 如果两个 cookie 具有相同的后缀,这可能会有错误匹配。当name = xyz 时,它将同时匹配xyz=valueabcxyz=value
  • unescape((document.cookie.match(key + '=([^;].+?)(;|$)') || [])[1] || '');Glize/dom/Cookies的修改版
  • 将正则表达式更新为new RegExp('(^| )' + name + '=([^;]+)') 以避免@BrentWashburne 提出的问题。此外,我对此进行了 jsperf 测试,并给出了最高票数的答案,这个结果略胜一筹,但代码肯定更少,更容易理解:jsperf.com/simple-get-cookie-by-name
  • @ScottJungwirth 是的,但是你必须更新 return 语句以返回 match[2];
  • @ScottJungwirth 为什么不new RegExp('(^|;)' + name + '=([^;]+)')?行首或分号后面的name,为什么是空格` `?
【解决方案3】:

如果你使用 jQuery,我推荐你使用这个插件:

https://github.com/carhartl/jquery-cookie
https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js

<script type="text/javascript"
 src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js">

所以你可以像这样读取cookie:

var value = $.cookie("obligations");

你也可以写cookie:

$.cookie('obligations', 'new_value');
$.cookie('obligations', 'new_value', { expires: 14, path: '/' });

删除 cookie:

$.removeCookie('obligations');

【讨论】:

  • 不知道为什么这还没有真正被评为最佳答案。是的,它是 jQuery 而不是 javascript,但同时它是!!!!
  • @Cozzbie 可能包含一个外部库(从而添加另一个 http 请求)来获取 cookie 值是一种不必要的矫枉过正。
  • 我在“$.cookie”处收到错误“Uncaught ReferenceError: $ is not defined”。虽然我包含了所有必要的库,如 jquery.min.js 和这个答案中建议的库。
  • @rahulserver 是的,可能是 2015 年,但现在,2021 年真的没关系,在我开始实现所有正则表达式函数之前,我包含了脚本,我已经完成了。
  • 不管怎样,jquery-cookie 已被js-cookie 取代:github.com/js-cookie/js-cookie
【解决方案4】:

其他一些答案中使用正则表达式的方法并不涵盖所有情况,尤其是:

  1. 当 cookie 是最后一个 cookie 时。在这种情况下,cookie 值后面不会有分号。
  2. 当另一个 cookie 名称以正在查找的名称结尾时。例如,您正在寻找名为“one”的 cookie,并且有一个名为“done”的 cookie。
  3. 当 cookie 名称包含在正则表达式中使用时不被解释为自身的字符时,除非它们前面有反斜杠。

以下方法处理这些情况:

function getCookie(name) {
    function escape(s) { return s.replace(/([.*+?\^$(){}|\[\]\/\\])/g, '\\$1'); }
    var match = document.cookie.match(RegExp('(?:^|;\\s*)' + escape(name) + '=([^;]*)'));
    return match ? match[1] : null;
}

如果未找到 cookie,这将返回 null。如果 cookie 的值为空,它将返回一个空字符串。

注意事项:

  1. 此函数假定cookie names are case sensitive
  2. document.cookie - 当它出现在赋值的右侧时,它表示一个包含以分号分隔的 cookie 列表的字符串,这些 cookie 又是 name=value 对。每个分号后似乎有一个空格。
  3. String.prototype.match() - 找不到匹配项时返回 null。找到匹配项时返回一个数组,索引[1] 处的元素是第一个匹配组的值。

正则表达式注释:

  1. (?:xxxx) - 形成一个不匹配的组。
  2. ^ - 匹配字符串的开头。
  3. | - 为组分隔替代模式。
  4. ;\\s* - 匹配一个分号后跟零个或多个空白字符。
  5. = - 匹配一个等号。
  6. (xxxx) - 形成一个匹配组。
  7. [^;]* - 匹配零个或多个分号以外的字符。这意味着它将匹配最多(但不包括)分号或字符串末尾的字符。

【讨论】:

  • 这个答案是最好和最短的函数,它适用于所有情况,没有错误匹配。它还对它的工作原理进行了最好的解释。但是,没有解释 escape 功能,我认为如果作者创建了 cookie,他会知道该名称是否需要转义。所以我宁愿看到一个更短的函数:function getCookie(name) { var match = document.cookie.match(RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); return match ? match[1] : null; }
  • 如果它是一个通用工具,它应该转义名称或者如果名称不能直接嵌入到正则表达式中则抛出错误。知道应用程序限制的人可以移除逃生或守卫。
【解决方案5】:

4 年后,ES6 方式更简单的版本。

function getCookie(name) {
  let cookie = {};
  document.cookie.split(';').forEach(function(el) {
    let [k,v] = el.split('=');
    cookie[k.trim()] = v;
  })
  return cookie[name];
}

我还创建了一个gist 将其用作Cookie 对象。例如,Cookie.set(name,value)Cookie.get(name)

这会读取所有 cookie 而不是扫描。少量 cookie 也可以。

【讨论】:

  • 漂亮而简单。但是如果 cookie 包含一个 '=' 就会遇到麻烦
【解决方案6】:

这是一种无需任何外部库即可获取具有特定名称的 cookie 值的单行:

const value = ('; '+document.cookie).split(`; COOKIE_NAME=`).pop().split(';')[0];

此答案基于kirlich's brilliant solution。此解决方案的唯一妥协是,当 cookie 不存在时,您将得到一个空字符串。不过,在大多数情况下,这不应该是一个交易破坏者。

【讨论】:

  • @pustiul500 感谢您提出的编辑建议,但我不得不拒绝。我想应用 0 索引访问,这确实是一个改进,但请提供您的单行函数作为评论,因为我想保持我的回答尽可能简短,以突出单行心态。跨度>
【解决方案7】:

我已经修改了 Jonathan 在这里提供的函数,通过使用正则表达式,您可以通过它的名称获取一个 cookie 值,如下所示:

function getCookie(name){
    var pattern = RegExp(name + "=.[^;]*")
    var matched = document.cookie.match(pattern)
    if(matched){
        var cookie = matched[0].split('=')
        return cookie[1]
    }
    return false
}

如果返回空字符串则表示cookie存在但没有值,如果返回false则cookie不存在。我希望这会有所帮助。

【讨论】:

  • 只是好奇,你为什么不在第 3 行使用varmatched = ...
  • 对不起,忘记写了。
【解决方案8】:

您可以使用 js-cookie 库来获取和设置 JavaScript cookie。

包含在您的 HTML 中:

<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>

创建 Cookie:

Cookies.set('name', 'value');

读取 Cookie:

Cookies.get('name'); // => 'value'

【讨论】:

    【解决方案9】:

    这是一个很短的版本

     function getCookie(n) {
        let a = `; ${document.cookie}`.match(`;\\s*${n}=([^;]+)`);
        return a ? a[1] : '';
    }
    

    请注意,我使用 ES6 的模板字符串来组成正则表达式。

    【讨论】:

    • 从现在开始的最佳答案。使用 ES6 特性。现在是 2017 年,人们仍在使用 var+ 进行连接等。-.-'
    • @EliasSoares 使用var有什么问题?
    • 没问题,但使用 let 是一种很好的做法,因为它在许多情况下都有优势,几乎没有劣势
    【解决方案10】:

    我知道这是一个老问题,但我也遇到了这个问题。仅作记录,开发人员中有一个小 API mozilla web page

    Yoy 仅使用 JS 就可以通过名称获取任何 cookie。恕我直言,代码也更干净(除了长线,我相信你可以轻松修复)。

    function getCookie(sKey) {
        if (!sKey) { return null; }
        return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
    }
    

    如 cmets 中所述,请注意此方法假定键和值是使用 encodeURIComponent() 编码的。如果 cookie 的键和值未编码,则删除 decode & encodeURIComponent()。

    【讨论】:

    • 请注意,该方法假定 cookie 名称和值都在设置 cookie 时使用encodeURIComponent() 进行编码,如果您使用伴随函数设置 cookie,这将是正确的,但可能不会总是如此。 test
    • @JohnS 我们可以删除 decodeURIComponent,对吧? (如果我们不使用它来设置 cookie?)它还能工作吗?
    • 是的,刚刚删除了 decodeURI,这个正则表达式是个怪物。谢谢你,马克,投票!
    【解决方案11】:

    我的一个线性函数通过它的键来获取值 cookie。

    cookie = key=>((new RegExp((key || '=')+'=(.*?); ','gm')).exec(document.cookie+'; ') ||['',null])[1]
    

    调用cookie函数为

    cookie('some-key')
    

    【讨论】:

    • 如果没有设置同名的cookie会出现问题。
    • 我已更改代码。如果没有找到 cookie,则返回 null
    【解决方案12】:
    function getCookie(name) {
        var pair = document.cookie.split('; ').find(x => x.startsWith(name+'='));
        if (pair)
           return pair.split('=')[1]
    }
    

    【讨论】:

    • 如果没有找到,find 已经返回 undefined。这可以通过添加 .replace(/.*=/, '') 并删除 if 语句和拆分来简化。
    【解决方案13】:

    一个将 cookie 转换为 JavaScript 对象或地图的衬垫

    Object.fromEntries(document.cookie.split('; ').map(v=>v.split('=').map(decodeURIComponent)))
    
    new Map(document.cookie.split('; ').map(v=>v.split('=').map(decodeURIComponent)))
    

    【讨论】:

      【解决方案14】:

      使用object.defineProperty

      有了这个,你可以轻松访问cookies

      Object.defineProperty(window, "Cookies", {
          get: function() {
              return document.cookie.split(';').reduce(function(cookies, cookie) {
                  cookies[cookie.split("=")[0]] = unescape(cookie.split("=")[1]);
                  return cookies
              }, {});
          }
      });
      

      从现在开始你可以这样做:

      alert( Cookies.obligations );
      

      这也会自动更新,因此如果您更改 cookie,Cookies 也会更改。

      【讨论】:

      • 完美!除了它不适用于具有诸如破折号之类的字符(作为 cookie 名称)的对象,并且在拆分时,对象首先有一个空格,所以我去cookies[(cookie.split("=")[0]).replace(/ /g,'')] = ..。谢谢!!
      • @Samuel Elh 正确,但您也可以使用 .trim() 代替 replace(/ /g, '' )
      【解决方案15】:

      kirlich 给出了一个很好的解决方案。但是,当有两个具有相似名称的 cookie 值时,它会失败,这是针对这种情况的简单修复:

      function getCookie(name) {
        var value = "; " + document.cookie;
        var parts = value.split("; " + name + "=");
        if (parts.length >= 2) return parts.pop().split(";").shift();
      }
      

      【讨论】:

        【解决方案16】:

        在我看来,您可以将 cookie 键值对拆分为一个数组并以此为基础进行搜索:

        var obligations = getCookieData("obligations");
        

        运行如下:

        function getCookieData( name ) {
            var pairs = document.cookie.split("; "),
                count = pairs.length, parts; 
            while ( count-- ) {
                parts = pairs[count].split("=");
                if ( parts[0] === name )
                    return parts[1];
            }
            return false;
        }
        

        小提琴:http://jsfiddle.net/qFmPc/

        甚至可能是以下内容:

        function getCookieData( name ) {
            var patrn = new RegExp( "^" + name + "=(.*?);" ),
                patr2 = new RegExp( " " + name + "=(.*?);" );
            if ( match = (document.cookie.match(patrn) || document.cookie.match(patr2)) )
                return match[1];
            return false;
        }
        

        【讨论】:

        • 有没有一种方法可以使用 document.cookie.indexOf(name) 并进行比较?
        • @AndrejHefner 你可以,虽然那会匹配子字符串。因此,如果您有一个名为“foobar”的 cookie 和一个名为“bar”的 cookie,您可能会将“foobar”中的“bar”与键“bar”混淆。
        • @AndrejHefner 请看后面的方法,应该更快,因为它会检查字符串是否匹配。
        • 第二种方法有一个错误,它找不到最后一个 cookie 值,因为它总是在寻找 ;在末尾。更正版本为:function getCookieData( name ) { var patrn = new RegExp( "(?:^| )" + name + "=(.*?)(?:;|$)" ); if ( match = (document.cookie.match(patrn) )) return match[1]; return false; }
        【解决方案17】:

        总是运行良好:

        function getCookie(cname) {
            var name = cname + "=",
                ca = document.cookie.split(';'),
                i,
                c,
                ca_length = ca.length;
            for (i = 0; i < ca_length; i += 1) {
                c = ca[i];
                while (c.charAt(0) === ' ') {
                    c = c.substring(1);
                }
                if (c.indexOf(name) !== -1) {
                    return c.substring(name.length, c.length);
                }
            }
            return "";
        }
        
        function setCookie(variable, value, expires_seconds) {
            var d = new Date();
            d = new Date(d.getTime() + 1000 * expires_seconds);
            document.cookie = variable + '=' + value + '; expires=' + d.toGMTString() + ';';
        }
        

        对 jQuery 或任何东西没有要求。纯旧的优秀 JavaScript。

        【讨论】:

          【解决方案18】:

          获取带有 cookie 名称的 cookie 的简单函数:

          function getCookie(cn) {
              var name = cn+"=";
              var allCookie = decodeURIComponent(document.cookie).split(';');
              var cval = [];
              for(var i=0; i < allCookie.length; i++) {
                  if (allCookie[i].trim().indexOf(name) == 0) {
                      cval = allCookie[i].trim().split("=");
                  }   
              }
              return (cval.length > 0) ? cval[1] : "";
          }
          

          【讨论】:

            【解决方案19】:

            显然,MDN 从未听说过单词边界正则表达式字符类\b,它匹配连续的\w+,它在任一侧以\W+ 为界:

            getCookie = function(name) {
                var r = document.cookie.match("\\b" + name + "=([^;]*)\\b");
                return r ? r[1] : null;
            };
            
            var obligations = getCookie('obligations');
            

            【讨论】:

              【解决方案20】:

              在我的项目中,我使用以下函数按名称访问 cookie

              function getCookie(cookie) {
                  return document.cookie.split(';').reduce(function(prev, c) {
                      var arr = c.split('=');
                      return (arr[0].trim() === cookie) ? arr[1] : prev;
                  }, undefined);
              }
              

              【讨论】:

                【解决方案21】:

                一个简单的方法:)

                const cookieObj = new URLSearchParams(document.cookie.replaceAll("; ","&"))
                cookieObj.get("your-cookie-name")
                

                【讨论】:

                  【解决方案22】:

                  这里已经有很好的获取cookie的答案,但是这是我自己的解决方案:

                  function getcookie(cookiename){
                  var cookiestring  = document.cookie;
                  var cookiearray = cookiestring.split(';');
                  for(var i =0 ; i < cookiearray.length ; ++i){ 
                      if(cookiearray[i].trim().match('^'+cookiename+'=')){ 
                          return cookiearray[i].replace(`${cookiename}=`,'').trim();
                      }
                  } return null;
                  }
                  

                  用法:`

                       getcookie('session_id');
                     // gets cookie with name session_id
                  

                  【讨论】:

                    【解决方案23】:

                    由javascript设置

                    document.cookie = 'cookiename=tesing';
                    

                    通过 jquery 获取 jquery-cookie plugin

                    var value = $.cookie("cookiename");
                    
                    alert(value);
                    

                    【讨论】:

                    • @cytsunny - 这是因为你必须有 jquery cookie 插件才能使用它。
                    • 哇....以前缺少什么重要信息....但是从您提供的链接来看,图书馆的所有者似乎决定他们最好删除 jquery 依赖项。
                    【解决方案24】:

                    参考:https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

                    document.cookie = "test1=Hello";
                    document.cookie = "test2=World";
                    
                    var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)|^.*$/, "$1");
                    
                      alert(cookieValue);
                    

                    【讨论】:

                      【解决方案25】:
                      function getCookie(cname) {
                        var name = cname + "=";
                        var ca = document.cookie.split(';');
                        for(var i = 0; i < ca.length; i++) {
                          var c = ca[i];
                          while (c.charAt(0) == ' ') {
                            c = c.substring(1);
                          }
                          if (c.indexOf(name) == 0) {
                            return c.substring(name.length, c.length);
                          }
                        }
                        return "";
                      }
                      

                      将 cookie 名称传递给 getCookie() 函数以获取其值

                      【讨论】:

                        【解决方案26】:

                        我的解决办法是这样的:

                        function getCookieValue(cookieName) {
                            var ca = document.cookie.split('; ');
                            return _.find(ca, function (cookie) {
                                return cookie.indexOf(cookieName) === 0;
                            });
                        }
                        

                        此函数使用 Underscorejs _.find 函数。如果 cookie 名称不存在则返回 undefined

                        【讨论】:

                          【解决方案27】:

                          我是这样做的。这样我就可以访问一个对象来分离这些值。有了这个你可以将cookie传递给父级,然后你可以通过像

                          这样的键来访问你的值
                          var cookies=getCookieVal(mycookie);
                          alert(cookies.mykey);
                          function getCookieVal(parent) {
                                      var cookievalue = $.cookie(parent).split('&');
                                      var obj = {};
                                      $.each(cookievalue, function (i, v) {
                                          var key = v.substr(0, v.indexOf("="));
                                          var val = v.substr(v.indexOf("=") + 1, v.length);
                          
                                          obj[key] = val;
                          
                                      });
                                      return obj;
                                  }  
                          

                          【讨论】:

                            【解决方案28】:

                            只需使用以下函数(纯javascript代码)

                            const getCookie = (name) => {
                             const cookies = Object.assign({}, ...document.cookie.split('; ').map(cookie => {
                                const name = cookie.split('=')[0];
                                const value = cookie.split('=')[1];
                            
                                return {[name]: value};
                              }));
                            
                              return cookies[name];
                            };
                            

                            【讨论】:

                            • 清洁解决方案。谢谢。
                            【解决方案29】:

                            我写了一些可能很容易使用的东西,如果有人要添加一些东西,请随时这样做。

                            function getcookie(name = '') {
                                let cookies = document.cookie;
                                let cookiestore = {};
                                
                                cookies = cookies.split(";");
                                
                                if (cookies[0] == "" && cookies[0][0] == undefined) {
                                    return undefined;
                                }
                                
                                cookies.forEach(function(cookie) {
                                    cookie = cookie.split(/=(.+)/);
                                    if (cookie[0].substr(0, 1) == ' ') {
                                        cookie[0] = cookie[0].substr(1);
                                    }
                                    cookiestore[cookie[0]] = cookie[1];
                                });
                                
                                return (name !== '' ? cookiestore[name] : cookiestore);
                            }
                            

                            用法

                            getcookie() - 返回一个包含网页上所有 cookie 的对象。

                            getcookie('myCookie') - 从 cookie 对象返回 cookie myCookie 的值,否则如果 cookie 为空或未设置,则返回 undefined。


                            示例

                            // Have some cookies :-)
                            document.cookie = "myCookies=delicious";
                            document.cookie = "myComputer=good";
                            document.cookie = "myBrowser=RAM hungry";
                            
                            // Read them
                            console.log( "My cookies are " + getcookie('myCookie') );
                            // Outputs: My cookies are delicious
                            
                            console.log( "My computer is " + getcookie('myComputer') );
                            // Outputs: My computer is good
                            
                            console.log( "My browser is " + getcookie('myBrowser') );
                            // Outputs: My browser is RAM hungry
                            
                            console.log( getcookie() );
                            // Outputs: {myCookie: "delicious", myComputer: "good", myBrowser: "RAM hungry"}
                            
                            // (does cookie exist?)
                            if (getcookie('hidden_cookie')) {
                                console.log('Hidden cookie was found!');
                            } else {
                                console.log('Still no cookie :-(');
                            }
                            
                            // (do any cookies exist?)
                            if (getcookie()) {
                                console.log("You've got cookies to eat!");
                            } else {
                                console.log('No cookies for today :-(');
                            }
                            

                            【讨论】:

                              【解决方案30】:

                              一种查找现有 cookie 的实用方法。它返回一个数组,因此它支持同名的多次出现。它不支持部分键匹配,但是将过滤器中的 === 替换为正则表达式很简单。

                              function getCookie(needle) {
                                  return document.cookie.split(';').map(function(cookiestring) {
                                      cs = cookiestring.trim().split('=');
                              
                                      if(cs.length === 2) {
                                          return {'name' : cs[0], 'value' : cs[1]};
                                      } else {
                                          return {'name' : '', 'value' : ''};
                                      }
                                  })
                                  .filter(function(cookieObject) { 
                                      return (cookieObject.name === needle);
                                  });
                              }
                              

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 2016-01-12
                                • 2011-05-17
                                • 1970-01-01
                                • 2012-05-22
                                • 2018-05-06
                                相关资源
                                最近更新 更多