admin管理员组文章数量:1310537
I've been searching for a more concise way to represent multidimensional arrays in Javascript, so I'd like to find a way to separate an array using multiple separators, along with Javascript's built-in string.split(separator)
method.
For example, the string "what, am, I; doing, here, now"
would bee [["what", "am", "I"],["doing", "here", "now"]]
.
Is there any concise way to implement a function that does this?
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
}
I've been searching for a more concise way to represent multidimensional arrays in Javascript, so I'd like to find a way to separate an array using multiple separators, along with Javascript's built-in string.split(separator)
method.
For example, the string "what, am, I; doing, here, now"
would bee [["what", "am", "I"],["doing", "here", "now"]]
.
Is there any concise way to implement a function that does this?
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
}
Share
Improve this question
edited Dec 30, 2012 at 4:27
Anderson Green
asked Dec 8, 2012 at 6:27
Anderson GreenAnderson Green
31.9k70 gold badges210 silver badges339 bronze badges
3 Answers
Reset to default 7LAST EDIT
I was leaving some mas in the words, as @Tom points out. Here's the final code:
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);
AND FIDDLE
First split on the second separator, then split each member in there on the other separator.
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(' ');
}
LIVE DEMO
Note that you'll have to do a tad bit of cleanup to remove the empty space in the second array, but that should be simple.
EDIT -- I was feeling energetic - here's how you kill that annoying leading space
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(' ');
}
UPDATED FIDDLE
EDIT - this is why I love SO so much. Per @Nathan, you can just split on the regex and save some trouble
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);
UPDATED FIDDLE
This should work:
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,["," ,";" ]);
Update:
Now the code should work: http://jsfiddle/beTEq/1/
I figured out a solution that can handle any number of separators, based on this answer here.
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.
本文标签: Multidimensional array separators in JavascriptStack Overflow
版权声明:本文标题:Multidimensional array separators in Javascript - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741801206a2398235.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论