我正在尝试从window.location.hash变量创建数组,但我很费劲。
我的代码是:
$.each(window.location.hash.replace("#", "").split("&"), function (i, value) {
value = value.split("=");
var my_item = {value[0] : value[1]};
form_data[i] = my_item;
});
console.log(form_data);
感谢。
答案 0 :(得分:5)
尝试一下:
var hash = window.location.hash.slice(1);
var array = hash.split("&");
var values, form_data = {};
for (var i = 0; i < array.length; i += 1) {
values = array[i].split("=");
form_data[values[0]] = values[1];
}
console.log(form_data);
...当然我怀疑你可能想要搜索属性,而不是哈希,但我不知道你的具体用例。
答案 1 :(得分:2)
JavaScript不支持以下表示法:
var my_item = {value[0] : value[1]};
请改为尝试:
var my_item = {};
my_item[value[0]] = value[1];
这将创建一个数组,其中每个元素都有一个键和一个值,例如:
[{name: jason}, {age: 23}, {location: pacific}] //array of single keys
使用哈希可能会在您的情况下产生更多场景,因此您可以调用form_data['age']
,而不必查看数组:
将form_data
初始化为对象:
form_data = {};
直接向其添加密钥:
form_data[value[0]] = value[1];
结果是:
{name: jason, age: 23, location: pacific} //associative array with properties
答案 2 :(得分:2)
your code is correct only error is
$.each(window.location.hash.replace("#", "").split("&"), function (i, value) {
value = value.split("=");
var _formItem={};
var my_item={};
my_item[value[0]]= value[1];
form_data[i] = my_item;
});
答案 3 :(得分:0)
未声明的form_data
不是对象,因此它不具有任何属性,因此form_data[i] = ...
将失败。在一个不错的浏览器中运行此脚本,控制台应该显示一条相当于我刚刚说过的消息。
编辑 - 不,它不会,因为伪造的对象文字语法会像Kobi提到的那样首先将其绊倒。这两个问题都应该修复。
答案 4 :(得分:0)
以下是基于以下网址的示例:
<强> http://www.someUrl.com/Index.htm#foo=bob&moo=alice 强>
<!DOCTYPE html>
<html lang="en">
<head>
<title>hash me long time</title>
</head>
<body>
<p>Hello World!</p>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function () {
var hash = window.location.hash.replace('#', '').split('&');
var myArray = new Array();
for (var x = 0; x < hash.length; x++) {
var itemArray = hash[x].split('=');
var item = new Object();
item.key = itemArray[0];
item.value = itemArray[1];
myArray.push(item);
}
for (var x = 0; x < myArray.length; x++)
console.log(myArray[x].key + ' is ' + myArray[x].value);
});
</script>
</body>
</html>
答案 5 :(得分:0)
完美物体。
location.hash = location.hash ? location.hash : "#!";
$.each((location.hash ? location.hash.split("#!") : [""])[1].split("&"), (function () {
y = this.split("=");
$hash[y[0]] = y[1];
}));
如果你还没有使用#!你可以把它改成#
答案 6 :(得分:0)
从url hash获取关联数组:
function readUrlHashParams() {
var result = {};
var hashParam = window.location.hash.substring(1);
var params = hashParam.split("&");
$.each(params, function (index, set) {
var paramSet = set.split("=");
if (typeof (paramSet[1]) !== "undefined") {
result[paramSet[0]] = decodeURIComponent(paramSet[1]);
} else {
result[paramSet[0]] = "";
}
});
return result;
}
示例网址
http://localhost/Index.html#Param1=test1&Param2=Test2&Param3=
<强>结果强>
var test = readUrlHashParams();
console.log(test);
对象{Param1:“test1”,Param2:“Test2”,Param3:“”}