将二维数组拆分为三维数组 JavaScript
2017-08-01
117
我有一些数据,我想将其拆分两次。数据看起来如下:
var data = ['a1 b1 c1', 'a2 b2 c2Xa3 b3 c3Xa4 b4 c4', 'a5 b5 c5', 'a6 b6 c6Xa7 b7 c7', 'a8 b8 c8'];
作为第一个分隔符,我使用“X”字符,效果很好:
var firstSplit = new Array(new Array());
for(var i = 0; i < data.length; i++)
firstSplit[i] = data[i].split('X');
但是当我使用元素之间的空格作为分隔符时,在第二次拆分的行上出现“Uncaught TypeError:无法设置未定义的属性‘0’”。
var secondSplit = new Array(new Array(new Array()));
for(var i = 0; i < firstSplit.length; i++) {
for(var j = 0; j < firstSplit[i].length; j++)
secondSplit[i][j] = firstSplit[i][j].split(' ');
}
3个回答
您可以先按
X
进行拆分,然后按空格
映射拆分值的结果。
var data = ['a1 b1 c1', 'a2 b2 c2Xa3 b3 c3Xa4 b4 c4', 'a5 b5 c5', 'a6 b6 c6Xa7 b7 c7', 'a8 b8 c8'],
result = data.map(a => a.split('X').map(b => b.split(' ')));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Nina Scholz
2017-08-01
Array.map 会是更好的方法
var data = ['a1 b1 c1', 'a2 b2 c2Xa3 b3 c3Xa4 b4 c4', 'a5 b5 c5', 'a6 b6 c6Xa7 b7 c7', 'a8 b8 c8'];
var result = data.map( (str) => {
return str.split(' ');
});
console.log(result);
Val
2017-08-01
使用
.push
将每个元素推送到结果数组。
var data = ['a1 b1 c1', 'a2 b2 c2Xa3 b3 c3Xa4 b4 c4', 'a5 b5 c5', 'a6 b6 c6Xa7 b7 c7', 'a8 b8 c8'];
var firstSplit = new Array(new Array());
for (var i = 0; i < data.length; i++) {
firstSplit[i] = data[i].split('X');
}
var secondSplit = [];
for (var i = 0; i < firstSplit.length; i++) {
for (var j = 0; j < firstSplit[i].length; j++) {
secondSplit.push(firstSplit[i][j].split(' '));
}
}
console.log(secondSplit)
Brett DeWoody
2017-08-01