我有一个 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]);
}
}
原文由 user1395001 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种避免遍历数组的方法是:
演练
按标记拆分字符串将生成一个包含一个字符串(相同值)的数组,以防标记不存在于字符串中,或者生成一个包含两个字符串的数组,以防标记在字符串中找到。
第一个(左)元素是标记之前的字符串,第二个(右)元素是标记之后的字符串。
(注意:如果字符串以标记开头,则第一个元素是空字符串)
考虑到 cookie 的存储方式如下:
为了检索特定的 cookie 值,我们只需要获取“; {name}=”之后和下一个“;”之前的字符串。在我们进行任何处理之前,我们在 cookie 字符串前加上“;”,这样每个 cookie 名称(包括第一个)都包含在“;”和“=”中:
现在,我们可以先用“; {name}=”拆分,如果在 cookie 字符串中找到 token(即我们有两个元素),我们将以第二个元素结束,第二个元素是以我们的 cookie 值开头的字符串。然后我们将其从数组中拉出(即弹出),并重复相同的过程,但现在使用“;”作为令牌,但这次拉出左边的字符串(即移位)以获取实际令牌值。