javascript中的三维数组拆分

javascript中的三维数组拆分,javascript,arrays,split,Javascript,Arrays,Split,我对斯普利特有意见。我有一个长字符串,我想用三维数组填充它 var str = "normal/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*list/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1%pokoj/světlo-15-1"

我对斯普利特有意见。我有一个长字符串,我想用三维数组填充它

var str = "normal/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*list/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1%pokoj/světlo-15-1";
 var res = str.split("*");
 var res2 = new Array();
 var res3 = new Array();

 for (var i = 0; i < res.length; i++) {
     res2[i] = res[i].split("%");
     for (var t = 0; t < res2[i].length; t++) {
         res3[i]= new Array();
         res3[i][t]=res2[i][t].split("/");
     }
 }
 document.getElementById("demo2").innerHTML = res3;
var str=“正常/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*列表/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1/pokoj-15-tlo”;
var res=str.split(“*”);
var res2=新数组();
var res3=新数组();
对于(变量i=0;i
但问题是,res3的结果是:

,nocni,zapnout-2-1,vypnout-3-1,列表,film-4-1,manual-5-1,auto-6-1,,,,pokoj,světlo-15-1


我不知道是什么问题。

试试下面的方法。默认情况下,JavaScript在打印数组时去掉括号和引号

document.getElementById("demo2").innerHTML = JSON.stringify(res3);
下面是逻辑的一个工作实现:

var res3 = str.split('*').map(function(segment) {
    return segment.split('%').map(function(segment) {
        return segment.split('/');
    });
});
试试这个:

 var str = "normal/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*list/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1%pokoj/světlo-15-1";
 var res = str.split("*");
 for(var i=0; i< res.length;i++){
     res[i] = res[i].split("%");
     for(var j=0;j< res[i].length;j++){
         res[i][j] = res[i][j].split("/");
     }
 }
 console.log(res);
var str=“正常/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*列表/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1/pokoj-15-tlo”;
var res=str.split(“*”);
对于(变量i=0;i
另外,为了让您知道,您的代码存在重新初始化res3[i]而不是使其成为res3[i][t]的问题。这应该是您的代码:

 var str = "normal/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*list/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1%pokoj/světlo-15-1";
var res = str.split("*");
var res2 = new Array();
var res3 = new Array();

for (var i = 0; i < res.length; i++) {
    res2[i] = res[i].split("%");
    res3[i] = new Array();
    for (var t = 0; t < res2[i].length; t++) {
        res3[i][t]= new Array();
        res3[i][t]=res2[i][t].split("/");
    }
}
var str=“正常/zapnout-0-1/vypnout-1-1%nocni/zapnout-2-1/vypnout-3-1*列表/film-4-1/manual-5-1/auto-6-1*obyvak/světlo-7-1/krb-8-1/žaluzie-9-1/televize-10-1%světlo-11-1/okno-12-1%světlo-13-1/okno-14-1/pokoj-15-tlo”;
var res=str.split(“*”);
var res2=新数组();
var res3=新数组();
对于(变量i=0;i

但是请停止以这种方式使用变量,因为对于大型应用程序来说,这将是一个内存杀手。

请使用
var res2=[]更优雅的说[[null,[“nocni”,“zapnout-2-1”,“vypnout-3-1”],[[“列表”,“film-4-1”,“manual-5-1”,“auto-6-1”],[null,null,null,[“pokoj”,“světlo-15-1”]],然后我不知道你在期待什么。我想要
[[[[“normal/zapnout-0-1/vypnout-1”],[“nocni”,“zapnout-2-1”,“světlo-15-1”],“film-1”][[[“obyvak”、“světlo-7-1”、“krb-8-1”、“žaluzie-9-1”、“televize-10-1”]、[“světlo-11-1”、“okno-12-1”]、[“světlo-13-1”、“světlo-141”]、[“pokoj”、“světlo-15-1”]]
不带空。@Sabi对您的答案投了赞成票,但请尝试给出一个答案,不要使用ES5,因为这类“开发者”“将开始询问由于在IE 8中使用映射功能而收到的错误。”@非常感谢。我只是觉得这对
.map
更有意义。