推时:
a=[ ['','','','','','','',''] ];
a.push("['','','','','','','','']");或
a=[ ['','','','','','','',''] ];
a.push(new Array(8));我想要:
a=[ ['','','','','','','',''], ['','','','','','','',''] ];因此,相反,我得到:
a= [ ['','','','','','','',''], '','','','','','','','' ];我只想添加一个元素(里面有8个子元素)。相反,我现在有9个元素。正如您所能想象的那样,它正在破坏我的array.length值!
我了解到:
a.push('','','','','','','','');将添加8个额外的元素,就好像我将每个元素分别推送一样。
甚至我也试过:
EmptyData=['','','','','','','',''];
a.push(EmptyData);还添加了8种元素。我做错什么了?
简短的解决方案或小提琴手将是一个很好的节日礼物。
发布于 2015-12-23 11:55:22
a.push("['','','','','','','','']");您正在推送字符串"...",而不是数组
这样做会很好:
a=[ ['','','','','','','',''] ];
a.push(['','','','','','','','']);发布于 2015-12-23 11:58:10
您可以使用此技巧创建N个元素的正常数组:
var arr_of_n_elements = Array.apply(null, Array(n));要创建一个m x n数组,只需使用此技巧两次:
var m_n_arr = Array.apply(null, Array(n)).map(function() {
return Array.apply(null, Array(m));
});使用这种方法,这个数组的每个元素都将是undefined (但它将是一个合适的数组-可迭代,等等-否则)。若要使用特定值,只需添加另一个填充- map。
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(),那么它将变得更加简洁:
var m_n_arr = Array.apply(null, Array(n)).map(function() {
return Array(m).fill(empty_val);
});不要落入过于简单化的陷阱:这.
var m_n_arr = Array(n).fill(Array(m).fill(empty_val));..。将创建一个完全相同对象的数组。现在,当您更改一行中的值时:
m_n_arr[0][0] = '42';..。这意味着第0列的所有元素也等于'42‘。这不是你想看到的。)
发布于 2015-12-23 12:01:28
任意长度的解决方案:
var a = [['', '', '', '', '', '', '', '']];
a.push(Array.apply(null, { length: 8 }).map(function () { return ''; }));
document.write('<pre>' + JSON.stringify(a, 0, 4) + '</pre>');
https://stackoverflow.com/questions/34435122
复制相似问题