【发布时间】:2017-05-17 19:14:57
【问题描述】:
晚上好程序员社区! 是否可以在 Javascript 中创建一个线性数组。为了让我的问题更清楚,我想模仿我通常在 Javascript 上的 Python 中做的以下一个衬里:
>>> arrAy=[['_' for i in range(10)] for j in range(10)]
给出以下结果:
>>> for i in arrAy:
print(i)
>>> [['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_'],
['_', '_', '_', '_', '_', '_', '_', '_', '_', '_']]
谢谢
【问题讨论】:
-
从技术上讲,您可以在 JavaScript 的 1 行中完成所有操作,只需使用
;分隔语句,因此for(var i = 0; i < arrAy.length; i++) { console.log(arrAy[i]); }是有效的 -
for (var i = 0; i < 10; i++) for (var j = 0; j < 10; j++) doSomething(i, j);绝对是oneliner -
我真的希望它能够工作
var myArr = new Array(10).map(function() { return new Array(10).map(function() { return "_"; }); });,但由于new Array()使用undefined值初始化数组的方式以及map()如何仅在具有值的数组索引上运行提供的函数,它没有:(。你可以做var anArray = [[],[],[],[],[],[],[],[],[],[]].map(function(arr) { return ["_","_","_","_","_","_","_","_","_","_"]; });虽然:) -
@PatrickBarr,我可能没有完全理解您的想法,但在我看来,您并没有完全理解我的问题(对于任何歧义,我深表歉意)。我不需要显示数组 arrAy,而是使用 oneliner 创建它。类似:
for ( i amount of iterations ) {for ( j amount of iterations ) { '_' }}谢谢。 -
@Chihab 对不起,我没有试图回答,只是指出 javascript 不像传统语言那样完全遵循“行”,我认为你应该看看下面 le_m 的答案,如果您正在寻找极简代码
标签: javascript arrays