我正在检索一些数据,数据如下所示:
1, 2, 3, 4, 5
6, 7, 8, 9, 10
11, 12, 13, 14, 15
我希望它看起来像这样
[
[[1],[2],[3],[4],[5]],
[[6],[7],[8],[9],[10]],
[[11],[12],[13],[14],[15]]
]
因此,我可以像矩阵一样对数组进行寻址,data[0][1]
将为“2”。
通过这个答案,它几乎是there,但并不完全。我很难看起来像我想要的那样。
答案 0 :(得分:5)
如果这准确地代表了您的输入数据,那该怎么做:
var data = "1,2,3,4,5\n6,7,8,9,10\n11,12,13,14,15";
var matrix = data.split('\n').map(function(val) {
return val.split(',');
});
请注意,您指定的输出可能不是您的意思。每个数字可能不应该是它自己的单项数组。相反,上面的代码产生:
[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 1]
]
这意味着matrix[0][1]
将返回2
,而不是必须matrix[0][1][0]
编辑:正如评论中所述,我已将其留给您,以确保符合您的浏览器支持需求。这也适用于你曾经写过的所有其他JS系列......
答案 1 :(得分:1)
注意 - 如果您需要遍历数组,请使用简单的for
,而不是for..in
for..in
以无保证的顺序返回项目,这可能不是您在使用数组时所需的项目for..in
不仅仅返回数组元素,而是添加到Array原型中的任何内容(意味着如果使用传统的for循环,您可以完全确信代码可以正常工作,无论外部库可能包含在哪个外部库中页面。无需担心其他编码器已将属性/方法添加到Array.prototype)如果\n
是行分隔符而,
是行中的项目分隔符,则可以使用以下内容:
/* assuming data is already filled like:
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
*/
var arr = data.split("\n"), arr2 = [];
for(var i = 0; i < arr.length; i++) {
if(arr[i] != '') arr2.push(arr[i].split(','));
}
console.log(arr2);
/* arr2 will be like:
[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]
]
*/
答案 2 :(得分:-1)
var data = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'.split(',');
var matrixData = [];
while (data.length > 0) {
matrixData.push(data.splice(0, 5));
}
document.write(matrixData[0][1]);
编辑:如果您将数据作为一个简单的数字数组