我对斯普利特有意见。我有一个很长的字符串,我想用三维数组填充它。
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;但问题是,res3的结果是:
,nocni,zapnout-2-1,vypnout-3-1,列表,胶片-4-1,手动-5-1,auto-6-1,,,ě
我不知道问题出在哪里。
发布于 2014-03-09 14:31:53
试试这个:
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);另外,您需要知道的是,您的代码存在重新初始化res3i而不是使其为res3i的问题。这应该是您的代码:
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("/");
}
}但是,请不要以这种方式使用变量,因为对于一个大型应用程序来说,这将是一个内存杀手。
发布于 2014-03-09 13:48:18
试试下面的。默认情况下,JavaScript在打印数组时去掉括号和引号。
document.getElementById("demo2").innerHTML = JSON.stringify(res3);下面是逻辑的一个工作实现:
var res3 = str.split('*').map(function(segment) {
return segment.split('%').map(function(segment) {
return segment.split('/');
});
});https://stackoverflow.com/questions/22282967
复制相似问题