Définition d'un objet d'une scission de la matrice de
Je ne suis pas un javascript gourou. J'ai le code suivant ci-dessous:
var aCookieValues = sCookieContentString.split('&'); //split out each set of key/value pairs
var aCookieNameValuePairs = aCookieValues.split('='); //return an array of each key/value
Ce que je suis en train de faire est de diviser la première chaîne via & puis créer un autre tableau qui prend le premier tableau et le divise encore par l' = caractère de ce qui existe dans chaque valeur dans la aCookieValues tableau
Je reçois le message d'erreur aCookieValues.split est pas une fonction.
J'ai vu un exemple qui se fait de la même chose, mais la deuxième fois, ce mec est à l'aide d'une boucle:
(http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/)
//'&' seperates key/value pairs
var pairs = querystring.split("&");
//Load the key/values of the return collection
for (var i = 0; i < pairs.length; i++) {
var keyValuePair = pairs[i].split("=");
queryStringDictionary[keyValuePair[0]] = keyValuePair[1];
}
En fin de compte ce que je suis en train de faire ici, c'est un dictionnaire avec des paires clé/valeur basée sur le '=' split. Je suis simplement en train d'essayer de diviser un cookie valeurs et de la fourrer dans une belle dictionnaire donc, je peux alors obtenir certaines valeurs de ce dictionnaire plus tard.
quel algorithme. Vous parler de la 2ème exemple? c'est à partir de ce type de blog. Et honnêtement, je ne comprends pas tout à quelques choses qu'il a faites, par exemple = {}; et comment il est en train de créer un dictionnaire en JavaScript..il n'y a pas de dictionnaires en JavaScript?
Tout est un dictionnaire en JavaScript 🙂
... Voir les "Objets" de la section ici: crockford.com/javascript/survey.html
Si vous êtes plutôt demander une explication de ce code?
OriginalL'auteur PositiveGuy | 2010-07-15
Vous devez vous connecter pour publier un commentaire.
Vous obtenez cette erreur, car
aCookieValues
est un tableau, et il n'a pas unsplit
méthode. Vous devez appeler lasplit
méthode sur chaque élément deaCookieValues
:De fourrer tout dans votre beau dictionnaire, il suffit de le déclarer avant la boucle for:
var myDict = {}
, puis placez la ligne suivante après lasplit('=')
appel:EDIT: Qui, après la lecture de votre question correctement, c'est la même méthode utilisée dans l'extrait de code que vous avez fournies. J'espère au moins c'est ce qui explique comment ça fonctionne 🙂
c'est la ligne je ne comprends pas. myDict[aCookieNameValuePairs[0]] = aCookieNameValuePairs[1]; Et je ne sais pas, il ya JavaScript dictionnaires, après avoir essayé de le chercher...il n'y a pas ressemble, mais je viens de trouver un article de nice enfin 4guysfromrolla.com/webtech/100800-1.shtml
Vous devez utiliser une boucle. En fait vous pouvez utiliser
map()
, mais c'est assez avancé, et est juste un raccourci pour passer en boucle sur tous les éléments du tableau. (Et il ne fonctionne pas dans tous les navigateurs).JavaScript dictionnaires sont vraiment simple. Votre de déclarer:
var myDict = {};
... vous n'avez tout simplementmyDict['myKey'] = 'someValue';
... Vous pouvez ensuite appeleralert(myDict['myKey'])
et que vous souhaitez être alertésomeValue
... la partie que vous avez cité est essentiellement faire la même chose, depuisaCookieNameValuePairs[0]
est juste une chaîne avec la clé de chaque élément deaCookieValues
, etaCookieNameValuePairs[1]
est la valeur.Je vous suggérons de consulter la section "Objets": crockford.com/javascript/survey.html... à Noter que ` = new Object()` et ` = {} " sont la même chose. Le dernier est juste une notation abrégée, appelé le "littéral d'objet".
OriginalL'auteur Daniel Vassallo
Dans votre deuxième ligne que vous tentez d'appeler la fonction split() sur un tableau, lorsque c'est une fonction définie sur des chaînes de caractères.
Exemple:
Votre code serait alors appel split sur le tableau:
Mais cette fonction n'existe pas. Il semble que votre objectif est de diviser chaque chaîne de caractères dans le tableau, l'exemple que vous avez donné dans la question semble approprié en boucle sur chaque élément et de le découper.
OriginalL'auteur Mike Tunnicliffe
split
fonctionne sur une chaîne. Vous êtes en train de sépareraCookieValues
, qui est un tableau. L'exemple que vous citez est une boucle dans le tableau, puis diviser chaque élément comme une chaîne de caractères.Juste pour le plaisir, un moyen de régler ce problème serait d'utiliser un
map
fonction, qui effectue une action sur chaque élément d'un tableau, et émet un tableau en conséquence. Si vous faites un générique carte fonction disponible pour tous vos tableaux:...vous pouvez l'appeler comme une méthode sur votre tableau directement. Donc:
dictionary
sera désormais un bien propre tableau de la (des tableaux) de paires nom/valeur, comme ceci:Si votre cas d'utilisation devient complexe, une approche de ce genre peut être une belle abstraction. Bien sûr, vous pouvez disposer de ces données à d'autres structures si nécessaire, ou en jouant avec une fonction passée en map ou à la transformation dans un autre passage.
Je ne comprends pas comment le passé en fonction du x param fonctionne..c'est qu'au fond une sorte de délégué?
La fonction map ci-dessus correspond à la prise argument
f
. Dans le corps demap
, nous voyons que lef
argument est une fonction qui est appelée à l'intérieur de lafor
boucle --f(this[x])
. L'argument passé estthis[x]
- à-dire l'élément courant du tableau d'origine en question. Pensez à lafunction(a)
code (je l'ai changé poura
pour plus de clarté) comme une sorte de modèle -- une forme générale de la fonction que nous voulons faire passer àmap
. Lorsque la fonction est effectivement appliqué à l'intérieur demap
, nous sommes juste de dire: "prenez l'argument réel, et du logement-le partout où nous avons eua
dans ce "modèle".Je ne pense pas que la carte() est (encore?) standard. Vous ne pouvez pas compter sur sa présence ou de l'uniforme de comportement à travers les implémentations de js. Je suis à la définition d'une version de base ici, mais il serait probablement être intelligent pour vérifier en premier. Je vais l'ajouter à la réponse.
cool, je vais certainement regarder en ce que le déplacement vers l'avant comme une approche intéressante. J'ai besoin de digérer d'abord.
OriginalL'auteur Ken Redler