使用多个键解析javascript数组
嗨,我需要解析一个包含多个键的JavaScript数组。下面是我需要做的一个例子。感谢您的帮助使用多个键解析javascript数组,javascript,arrays,key,Javascript,Arrays,Key,嗨,我需要解析一个包含多个键的JavaScript数组。下面是我需要做的一个例子。感谢您的帮助 [ week1{ Meth:100, Marijuana:122, pDrugs:12, }, week2{ Meth:15, Marijuana:30, pDrugs:22, }, ] 我需要将它分解为单独的数组,基于它是week1还是week2。提前再次感谢 结局应该是
[
week1{
Meth:100,
Marijuana:122,
pDrugs:12,
},
week2{
Meth:15,
Marijuana:30,
pDrugs:22,
},
]
我需要将它分解为单独的数组,基于它是week1还是week2。提前再次感谢
结局应该是这样的
week1 = ["Meth:100,Marijuana:122,pDrugs12"] etc.
您的JSON格式严重不正确。如果它已经是一个对象(我猜它不是——否则,浏览器控制台中会出现意外的令牌错误),那么将括号更改为大括号,删除尾随逗号,并在没有它们的对象项后添加冒号(在
week1
和week2
之后)
如果您拥有的是一个字符串(从XHR或类似文件中获得),那么您必须执行上述所有更改,并将每个对象项括在引号内。它应该是这样的:
{
"week1": {
"Meth":100,
"Marijuana":122,
"pDrugs":12
},
"week2": {
"Meth":15,
"Marijuana":30,
"pDrugs":22
}
}
不管你在处理什么,你都应该把那些极其无效的JSON拿回来枪毙。尽管如此,这将需要一些严重的字符串操作。您必须使用String.replace()
和一些正则表达式进行彻底的处理
在获得有效的JSON后,就可以使用JSON.parse获得week1并向下钻取结果对象
函数日志(what){document.getElementById('out').value+=what+'\n---------------------------------------------\n';}
变量树=“[week1{Meth:100,大麻:122,pDrugs:12,},week2{Meth:15,大麻:30,pDrugs:22,},]”;
//绳子是生的
原木(树);
tree=tree.replace(
'/\r?\n/g',''//删除换行符以简化进一步的正则表达式
).替换(
'[','{'//将[替换为]{
).替换(
']','}'//replace]为}
).替换(
/\w+(?=[\{\:])/g,//为对象项添加引号
函数($1){return'+$1+'';}//使用lambda函数
).替换(
/“\{/g'”:{'//在对象项后添加冒号
).替换(
/,(?=\s*\})/g',//删除尾随的逗号
);
//字符串已修复
原木(树);
var obj=JSON.parse(树);
log('obj.week1='+JSON.stringify(obj.week1));
日志('obj.week1.Meth='+obj.week1.Meth);
#输出{
宽度:100%;
高度:170px;
}