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

现在我有了两个cookie,名字分别是shares=和obligation =。

我想让这个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]);
    }
 }

当前回答

我是这样做的。这样我就有了一个对象来分隔值。有了这个,你可以把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;
        }  

其他回答

一种避免在数组上迭代的方法是:

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

预排

如果字符串中不存在令牌,则通过令牌分割字符串将生成一个包含一个字符串(相同值)的数组;如果字符串中存在令牌,则生成一个包含两个字符串的数组。

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

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

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

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

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

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

现在,我们可以先用";{name}=",如果token在一个cookie字符串中找到(即我们有两个元素),我们将以第二个元素为以我们的cookie值开头的字符串结束。然后我们从数组中取出它(即pop),并重复相同的过程,但现在使用“;”作为标记,但这次取出左边的字符串(即shift)以获得实际的标记值。

您可以使用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'

这对我来说是完美的(假设cookie名称是唯一的):

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

这个方法开箱即用,效果非常好

function getCookie(cname) {
  var cookies = ` ${document.cookie}`.split(";");
  var val = "";
  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i].split("=");
    if (cookie[0] == ` ${cname}`) {
      return cookie[1];
    }
  }
  return "";
}

关于如何得到饼干,这里已经有了很好的答案,但这是我自己的解决方案:

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