Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法将N个数组';在不使用嵌套循环的情况下将N个长度的s放入数组?_Javascript_Arrays - Fatal编程技术网

Javascript 有没有办法将N个数组';在不使用嵌套循环的情况下将N个长度的s放入数组?

Javascript 有没有办法将N个数组';在不使用嵌套循环的情况下将N个长度的s放入数组?,javascript,arrays,Javascript,Arrays,我不想做下面这样的事情,或者这是我唯一的选择 var tempArray = []; var tempArray2 = []; for(var j = 0; j < data.length; j++) { tempArray2 = []; for(var k = 0; k < data[0].length; k++) { tempArray2.push(data[j][k]); } tempArray.push( tempArray2

我不想做下面这样的事情,或者这是我唯一的选择

var tempArray = [];
var tempArray2 = [];

for(var j = 0; j < data.length; j++) {
    tempArray2 = [];
    for(var k = 0; k < data[0].length; k++) {
        tempArray2.push(data[j][k]);
    }
    tempArray.push( tempArray2 );
}
var tempArray=[];
var tempArray2=[];
对于(var j=0;j
您可以使用
应用
方法,一次推送整个阵列。从未尝试过使用类似矩阵的数组

例如:

var tempArray = [], tempArray2 = [];

for(var j = 0, dataLen = data.length; j < dataLen; j++) {
    tempArray2.push.apply(tempArray2, data[j]);
    tempArray.push(tempArray2), tempArray2 = [];
}
var tempArray = [];

for(var j = 0, dataLen = data.length; j < dataLen; j++) {
    tempArray.push(data[j].slice());
}
只要您的
数据[j]
中的元素少于~150.000个,这将起作用


如果它有更多,你应该使用这个答案中提到的技巧:

我在你的代码中没有看到
N
。另外,我假设你指的是
数据[j]。在你的内部
for循环中的长度
。虽然可能有更简洁的东西,但这种循环从根本上发生了。这没有多大意义。您的
tempArray
将保留对
tempArray2
j
引用。它们都将引用具有相同成员的完全相同的数组..这也是事实。他没有将
tempArray2
的引用重新设置为新的数组对象。您没有重新设置引用是正确的。刚刚解决了这个问题。谢谢<代码>tempArray.push.apply(tempArray[data[j]])
tempArray.push(data[j])相同。您是否打算将
数据[j]
放在
[]
中?它不一样。没有
[]
tempArray
将是一个包含10000个元素的一维数组。使用
[]
它将是一个与数据完全相同的矩阵。请再次阅读我的评论。如果您执行了
tempArray.push.apply(tempArray,data[j]),那么您是对的,那么它将是一个单一的平面阵列,但这不是我所说的,它与。您的
.apply()
版本与执行
tempArray.push(数据[j])相同tempArray.push(数据[j])参考将是相同的。所以没有优势。如果执行
tempArray.push.apply(tempArray[data[j]])参考将不同。这将是一个新的矩阵。不,两种方式都是相同的参考。数组永远不会被复制。使用
.apply
所做的一切都是说“取下这些参数集合,假装我分别传递了它们”。换句话说,
foo.push.apply(foo[bar,baz,buz])
foo.push(bar,baz-buz)完全相同