0

我正在检索一些数据,数据如下所示:

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”。

通过这个答案,它几乎就在那里,但并不完全。我很难看起来像我想要的那样。

4

3 回答 3

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 行...

于 2013-02-10T07:20:42.607 回答
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]
]
*/
于 2013-02-10T07:19:43.433 回答
-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]);

编辑:如果您将数据作为一个简单的数字数组

于 2013-02-10T07:24:24.653 回答