4

在 JavaScript 中,是否可以使用分隔符将每个字符串拆分为多维字符串数组?我正在尝试使用字符串分隔符拆分多维字符串数组,但我还不知道如何在不使用多个 for 循环的情况下迭代多维数组。

var theArray = [["Split,each"],["string, in"],["this, array"]];

据我所知,不可能将该string.split(",")方法应用于多维数组。我需要找到一种解决方法,因为此代码无效:

alert([["Split,each"],["string, in"],["this","array"]].split(","));
4

2 回答 2

8

使用 Arraymap方法返回数组的修改版本:

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);
    }
});
于 2013-05-12T03:16:26.260 回答
3

您可以使用传统的 for 循环执行此操作:

var theArray = [["Split,each"],["string, in"],["this","array"]];

for(var i = 0; i<theArray.length; i++) {
    theArray[i] = theArray[i].split(",");
}

我会避免使用该map方法,它没有很好的支持。(IE < 9 不支持)

于 2013-05-12T03:17:20.060 回答