在JavaScript中,是否可以使用分隔符将每个字符串拆分为多维字符串数组?我正在尝试使用字符串分隔符拆分多维数组的字符串,但我还不知道如何在不使用多个for循环的情况下迭代多维数组。
var theArray = [["Split,each"],["string, in"],["this, array"]];
据我所知,无法将string.split(",")
方法应用于多维数组。我需要找到一种解决方法,因为此代码无效:
alert([["Split,each"],["string, in"],["this","array"]].split(","));
答案 0 :(得分:5)
使用Array map
方法返回阵列的修改版本:
var newArray = theArray.map(function(v,i,a){
return v[0].split(",");
});
作为map
方法的参数传递的函数用于确定映射数组中的值。如您所见,该函数获取数组中的每个值,用逗号分隔它,并返回两个字符串的结果数组。
然后输出:
[["Split", "each"],["string", "in"],["this", "array"]];
要对任意深度的数组递归地执行此操作,可以使用:
var newArray = theArray.map(function mapper(v,i,a){
if(typeof v == "string"){
return v.split(",");
} else {
return v.map(mapper);
}
});
答案 1 :(得分:3)
您可以使用传统的for循环执行此操作:
var theArray = [["Split,each"],["string, in"],["this","array"]];
for(var i = 0; i<theArray.length; i++) {
theArray[i] = theArray[i].split(",");
}
我没有使用map
方法it doesn't have great support。 (IE&lt; 9不支持它)