2017-10-10 2 views
0

Hier sind die Browser-Cookies:Wie kann ich ein Array basierend auf den Cookies erstellen?

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

Und hier ist mein Code:

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

Während das erwartete Ergebnis ["instagram", googleplus] ist. Wie kann ich das bekommen?

Derzeit wird nur das letzte Element im Cookie als Ergebniswert im Array gespeichert. Was ist los mit dir?

+0

Was ist 'Teile [1]'? "Name_"? – Walk

+0

@Walk Ja, es ist ein Element eines Arrays namens 'name'. dh 'var parts = ['id', 'name'];' –

+0

Nach dem 'startsWith' -Filter wird das zweite Element im Array" name_googleplus = true; ", führendes Leerzeichen beachten, daher beginnt es mit" name_ "anstelle von" Name_". – Walk

Antwort

1

Nach Ihrem startsWith Filter zweiten Element im Array wird "name_googleplus = true;", beachten Sie führende Leerzeichen, so dass es mit "name_" statt "name_" beginnt. Eine Möglichkeit, dies zu beheben, ist die Verwendung von trim(), um Leerräume zu entfernen.

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

wow, nett, danke, upvote –

Verwandte Themen