Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个键解析javascript数组_Javascript_Arrays_Key - Fatal编程技术网

使用多个键解析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。提前再次感谢 结局应该是

嗨,我需要解析一个包含多个键的JavaScript数组。下面是我需要做的一个例子。感谢您的帮助

[
    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;
}