搜索字符串是否存在于数组的任何值中,如 indexOf

search if string exists in any value of array like indexOf

我有一个 cookie 拆分成一个数组:

var cooks = document.cookie.split(';');
[dogs=bla, cats=sdfgh, cabbages=kjhgfdfg]

如果我想找到 'cats=sdfgh' 的索引,我可以使用

cooks.indexOf('cats=sdfgh');
1

但是如果我想搜索一下值cats是否已经被设置,我该怎么做呢? cooks.indexOf(find('cat=')); 或类似的东西?

所以在不知道猫的价值的情况下,如何判断它是否存在于 cookie 中?

而且,我怎样才能得到那个 cookie 的索引号?

你可以运行一个简单的正则表达式:

if(fun = document.cookie.match(/(^cats=|;cats=)([^;]+)/)){
    console.log(fun);
}

它会给你一个数组,如果匹配的话,第三个成员就是你的值:)

JSFIDDLE

但是,如果您不必支持糟糕的浏览器,那么值得一看评论中引用的 MDN cookie 框架。

您可以使用Array.prototype.some方法找到数组中的第一个匹配值:

var cooks = document.cookie.split(';'); // ["dogs=bla", "cats=sdfgh", "cabbages=kjhgfdfg"]

var isSet = cooks.some(function(cookie) {
    return cookie.indexOf('cats') == 0;
}); // => true