Javascript:将字符串拆分为二维数组

标签 javascript arrays string multidimensional-array split

我有一串月份和年份:

var months= "2010_1,2010_3,2011_4,2011_7";

我想把它做成一个二维数组,每个数组的第一个位置是年份,第二个位置是月份。换句话说,我想以这样的方式结束:

var monthArray2d = [[2010,1],[2010,3][2011,4],[2011,7]];

我目前的做法是:

//array of selected months
var monthArray = months.split(",");

//split each selected month into [year, month] array
var monthArray2d = new Array();
for (var i = 0; i < monthArray.length; i++) {
    monthArray2d[i] = monthArray[i].split("_");

有没有一种方法可以压缩该代码,以便我永远不需要使用 monthArray var?

最佳答案

您可以使用replace 来获得更紧凑的代码:

var months= "2010_1,2010_3,2011_4,2011_7";
var monthArray2d = []

months.replace(/(\d+)_(\d+)/g, function($0, $1, $2) {
    monthArray2d.push([parseInt($1), parseInt($2)]);
})

map如果您的目标浏览器支持它:

monthArray2d = months.split(",").map(function(e) {
    return e.split("_").map(Number);
})

基本上,第一个函数查找年/月模式“数字下划线数字”,并将每个找到的子字符串存储在一个数组中。当然,您可以使用其他分隔符代替下划线。该函数不关心值的分隔符(逗号),因此它可以是任何值。示例:

var months= "2010/1 ... 2010/3 ... 2011/4";
months.replace(/(\d+)\/(\d+)/g, function($0, $1, $2) {
    monthArray2d.push([parseInt($1), parseInt($2)]);
})

关于Javascript:将字符串拆分为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594097/

相关文章:

Javascript,帮助理解括号在代码中的工作原理

javascript - 如何检查同一索引处的两个数组?

java - 元素不应重复

javascript - JSON 的多个输入字段

javascript - JQuery - 日期选择器不出现

javascript - 我可以在 CSS 3 中创建类似 Mac 的菜单吗?

javascript - 如何使用 getJSON 从文件中获取 JSON 数组?

python '' .format() : "tuple index out of range"?

python - 字符串类型变量的自定义千位分隔符

java - 如果字符是 0 到 8 之间的数字,则将其增加 1(其他字符不变)