Javascript中的多维数组分隔符

Javascript中的多维数组分隔符,javascript,Javascript,我一直在寻找一种更简洁的方法来表示Javascript中的多维数组,因此我想找到一种使用多个分隔符以及Javascript内置的string.split(separator)方法来分隔数组的方法 例如,字符串“what,am,I;do,here,now”将变成[[“what”,“am”,“I”],[“do”,“here”,“now”] 有没有什么简洁的方法可以实现这样的功能 var theString = "what, am, I; doing, here, now"; var theArray

我一直在寻找一种更简洁的方法来表示Javascript中的多维数组,因此我想找到一种使用多个分隔符以及Javascript内置的
string.split(separator)
方法来分隔数组的方法

例如,字符串
“what,am,I;do,here,now”
将变成
[[“what”,“am”,“I”],[“do”,“here”,“now”]

有没有什么简洁的方法可以实现这样的功能

var theString = "what, am, I; doing, here, now";
var theArray = getArray(theString, [",", ";"]); //this should return [["what", "am", "I"],["doing", "here", "now"]].

function getArray(theString, separators){
    //convert a string to a multidimensional array, given a list of separators
}
最后编辑

正如@Tom指出的,我在单词中留下了一些逗号。以下是最终代码:

var str = "what, am, I; doing, here, now";

var arr = str.split(/\;\s*/g);
for (var i = 0; i < arr.length; i++){
    arr[i] = arr[i].split(/\,\s*/g);
}
console.log(arr);
var str=“什么,我,我;做什么,在这里,现在”;
var arr=str.split(/\;\s*/g);
对于(变量i=0;i


首先在第二个分隔符上拆分,然后在另一个分隔符上拆分其中的每个成员

var str = "what, am, I; doing, here, now";

var arr = str.split(';');
for (var i = 0; i < arr.length; i++){
    arr[i] = arr[i].split(' ');
}
var str=“什么,我,我;做什么,在这里,现在”;
var arr=str.split(“;”);
对于(变量i=0;i

请注意,您必须进行一点清理以删除第二个数组中的空白,但这应该很简单


编辑——我感觉精力充沛——下面是你如何扼杀那讨厌的领导空间的

var str = "what, am, I; doing, here, now";

var arr = str.split(';');
for (var i = 0; i < arr.length; i++){
    arr[i] = arr[i].replace(/^\s*/, '').split(' ');
}
var str=“什么,我,我;做什么,在这里,现在”;
var arr=str.split(“;”);
对于(变量i=0;i


编辑-这就是我如此热爱的原因。Per@Nathan,你可以在正则表达式上拆分,省去一些麻烦

var str = "what, am, I; doing, here, now";

var arr = str.split(/\;\s*/g);
for (var i = 0; i < arr.length; i++){
    arr[i] = arr[i].split(' ');
}
console.log(arr);
var str=“什么,我,我;做什么,在这里,现在”;
var arr=str.split(/\;\s*/g);
对于(变量i=0;i

这应该可以:

var theString = "what, am, I; another, string; doing, here, now";
 //this should return [["what", "am", "I"],["doing", "here", "now"]].

function getArray(theString, separators){
    //Firs split
    var strings = theString.replace(/\s+/g, '').split(separators.pop());
    //Second split
        var sep = separators.pop();
        for (var i = 0; i < strings.length; i++) {
            strings[i] = strings[i].split(sep);
        };
    console.log(strings);
    return strings;
}

var theArray = getArray(theString,["," ,";" ]);
var theString=“what,am,I;other,string;do,here,now”;
//这应该返回[[“什么”、“是”、“我”]、[“正在做”、“在这里”、“现在”]]。
函数getArray(字符串、分隔符){
//冷杉裂开
var strings=string.replace(/\s+/g',).split(separators.pop());
//第二次分裂
var sep=separators.pop();
for(var i=0;i
更新: 现在代码应该可以工作了:

我发现它可以处理任意数量的分隔符,基于

函数getArray(字符串、分隔符){
分隔符=分隔符。反向();
var theArray=字符串拆分(分隔符[0]);
对于(var j=1;j
如果该功能能在任意数量的分离器(而不仅仅是一个或两个)上正常工作,那就最好了-这将提供更大的灵活性。@AndersonGreen-当然-将上述代码概括为一个接受分隔符作为参数的函数应该很简单:)除了这一种,Javascript中还有其他简洁的表示多维数组的方法吗?如果可能的话,我想避免“重新发明轮子”。为了消除空间,你也可以在
上拆分第一次。您可以在正则表达式上拆分。如果按
/\”拆分\首先,您不必在以后替换(/^\s*/,'')
。您测试过这个吗?因为我很确定这行不通,他是对的。即使在函数中包含一个
返回字符串
,它在@tomsardu处也不起作用,因为函数“getArray”返回
未定义的
,但它应该返回变量
字符串
,并将其打印到控制台。您现在需要做的就是添加
返回字符串在函数
getArray
的最后一行之后,这样它才能正常工作。@AndersonGreen:是的,我忘记了,我在控制台上非常专注output@TomSarduy而且,当有两个以上的分隔符时,它似乎不起作用——不过,修复这个问题可能相当容易。
function getArray(theString, separators) {
    separators = separators.reverse();
    var theArray = theString.split(separators[0]);
    for (var j = 1; j < separators.length; j++) {
        theArray = theArray.map(function mapper(v, i, a) {
            if (typeof v == "string") {
                return v.split(separators[j]);
            } else {
                return v.map(mapper);
            }
        });
    }
    return theArray;
}

console.log(JSON.stringify(getArray("A, b, c; d, e, f;g,h,i'a, b, c;d,e,f", [",", ";", "'"])));
//this will write [[["A"," b"," c"],[" d"," e"," f"],["g","h","i"]],[["a"," b"," c"],["d","e","f"]]] to the console.