首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript二维Array.push()

JavaScript二维Array.push()
EN

Stack Overflow用户
提问于 2015-12-23 11:52:31
回答 4查看 8.5K关注 0票数 1

推时:

代码语言:javascript
复制
a=[ ['','','','','','','',''] ];
a.push("['','','','','','','','']");

代码语言:javascript
复制
a=[ ['','','','','','','',''] ];
a.push(new Array(8));

我想要:

代码语言:javascript
复制
a=[ ['','','','','','','',''], ['','','','','','','',''] ];

因此,相反,我得到:

代码语言:javascript
复制
a= [ ['','','','','','','',''], '','','','','','','','' ];

我只想添加一个元素(里面有8个子元素)。相反,我现在有9个元素。正如您所能想象的那样,它正在破坏我的array.length值!

我了解到:

代码语言:javascript
复制
a.push('','','','','','','','');

将添加8个额外的元素,就好像我将每个元素分别推送一样。

甚至我也试过:

代码语言:javascript
复制
EmptyData=['','','','','','','',''];
a.push(EmptyData);

还添加了8种元素。我做错什么了?

简短的解决方案或小提琴手将是一个很好的节日礼物。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-23 11:55:22

a.push("['','','','','','','','']");您正在推送字符串"...",而不是数组

这样做会很好:

代码语言:javascript
复制
a=[ ['','','','','','','',''] ];
a.push(['','','','','','','','']);
票数 6
EN

Stack Overflow用户

发布于 2015-12-23 11:58:10

您可以使用此技巧创建N个元素的正常数组:

代码语言:javascript
复制
var arr_of_n_elements = Array.apply(null, Array(n));

要创建一个m x n数组,只需使用此技巧两次:

代码语言:javascript
复制
var m_n_arr = Array.apply(null, Array(n)).map(function() {
   return Array.apply(null, Array(m));
});

使用这种方法,这个数组的每个元素都将是undefined (但它将是一个合适的数组-可迭代,等等-否则)。若要使用特定值,只需添加另一个填充- map

代码语言:javascript
复制
var empty_val = '';
var m_n_arr = Array.apply(null, Array(m)).map(function() {
   return Array.apply(null, Array(n)).map(function() {
     return empty_val;
   });
}); 

如果您的目标平台支持Array.prototype.fill(),那么它将变得更加简洁:

代码语言:javascript
复制
var m_n_arr = Array.apply(null, Array(n)).map(function() {
   return Array(m).fill(empty_val);
});

不要落入过于简单化的陷阱:这.

代码语言:javascript
复制
var m_n_arr = Array(n).fill(Array(m).fill(empty_val));

..。将创建一个完全相同对象的数组。现在,当您更改一行中的值时:

代码语言:javascript
复制
m_n_arr[0][0] = '42';

..。这意味着第0列的所有元素也等于'42‘。这不是你想看到的。)

票数 2
EN

Stack Overflow用户

发布于 2015-12-23 12:01:28

任意长度的解决方案:

代码语言:javascript
复制
var a = [['', '', '', '', '', '', '', '']];
a.push(Array.apply(null, { length: 8 }).map(function () { return ''; }));
document.write('<pre>' + JSON.stringify(a, 0, 4) + '</pre>');

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34435122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档