我不是一个javascript大师。我在下面有以下代码:
var aCookieValues = sCookieContentString.split('&'); // split out each set of key/value pairs
var aCookieNameValuePairs = aCookieValues.split('='); // return an array of each key/value
我要做的是将第一个字符串拆分为&然后创建另一个数组,该数组接受第一个数组并通过aCookieValues数组中每个值中存在的=字符进一步拆分
我收到错误aCookieValues.split不是函数。
我见过一个基本上做同样事情的例子,但这个家伙第二次使用循环:
(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];
}
最终我在这里想要实现的是一个最终字典,其中键/值对基于'='拆分。我只是想分割一个cookie的值并将其推入一个好的字典中,以便稍后我可以从该字典中获取某些值。
答案 0 :(得分:3)
您收到此错误是因为aCookieValues
是一个数组,并且它没有split
方法。您需要在split
的每个元素上调用aCookieValues
方法:
var aCookieValues = sCookieContentString.split('&');
for (var i = 0; i < aCookieValues.length; i++) {
var aCookieNameValuePairs = aCookieValues[i].split('=');
// Handle aCookieNameValuePairs[0] as the key
// Handle aCookieNameValuePairs[1] as the value
}
要把好词典中的所有内容都删掉,只需在for循环之前声明它:var myDict = {}
,然后在split('=')
调用之后添加以下内容:
myDict[aCookieNameValuePairs[0]] = aCookieNameValuePairs[1];
编辑:在正确阅读您的问题之后,与您提供的代码段中使用的方法相同。我希望至少这可以解释它是如何工作的:)
答案 1 :(得分:1)
split
对字符串进行操作。您正在尝试拆分aCookieValues
,这是一个数组。您引用的示例是循环遍历数组,然后将每个元素拆分为字符串。
只是为了好玩,处理这种情况的一种方法是使用map
函数,该函数对数组的每个元素执行操作,并作为结果发出数组。如果您为所有数组提供了通用映射函数,请执行以下操作:
if (!Array.prototype.map) { // don't step on anyone's toes
Array.prototype.map = function( f ) {
var result = [];
var aLen = this.length;
for( x = 0 ; x < aLen ; x++ ) {
result.push( f(this[x]) );
}
return result;
};
};
...您可以直接将其称为阵列上的方法。因此:
yourstring = 'x=3&y=4&zed=blah&something=nothing';
dictionary = yourstring.split('&').map( function(a){ return a.split('='); } );
dictionary
现在将成为名称/值对(数组)的干净数组,如下所示:
[["x", "3"], ["y", "4"], ["zed", "blahblah"], ["something", "nothing"]]
如果您的用例变得复杂,那么这样的方法可能是一个很好的抽象。当然,如果需要,您可以将这些数据排列在其他结构中,方法是使用传递给map的函数,或者在单独的传递中处理。
答案 2 :(得分:1)
在第二行中,当你是一个在字符串上定义的函数时,你试图在数组上调用split()。
示例:
"a=1&b=2&c=3".split('&') returns an array ['a=1','b=2','c=3']
然后,您的代码将调用数组上的split:
['a=1','b=2','c=3'].split('=')
但该功能不存在。看起来您的目标是将每个字符串拆分为数组,因此您在问题中给出的示例似乎是合适的 - 遍历每个元素并将其拆分。