2017-10-10 32 views
0

下面是浏览器的cookie:如何根据Cookie制作数组?

console.log(document.cookie); 
//=> name_instagram=true; name_googleplus=true; 

这里是我的代码:

console.log(document.cookie.split(';').filter((c) => c.startsWith(parts[1])).map((d) => d.replace(/.*_(.*)=true/, "$1"))); 
//=> ["instagram"] 

虽然该预期的结果["instagram", googleplus]。我怎么弄到的?


当前正如您所看到的,只是cookie中的最后一项将作为结果值存储到数组中。怎么了?

+0

什么是'零件[1]'? “名称_”? – Walk

+0

@Walk是的,它是'name'数组中的一个项目。即'var'=''id','name'];' –

+0

在您的'startsWith'过滤器中,第二个数组项将为“name_googleplus = true;”,请注意前导空格,因此它以“name_”开头,而不是“名称_”。 – Walk

回答

1

在阵列您startsWith过滤器第二项后,将是“name_googleplus =真;”,注意龙头的空间,所以它以“名_”代替“名_”开始。解决这个问题的一种方法是使用trim()删除空格。

console.log(document.cookie.split(';').filter((c) => c.trim().startsWith('name_')).map((d) => d.replace(/.*_(.*)=true/, "$1"))); 
+0

哇,很好,谢谢你,upvote –