我不想做下面的事情,或者这是我唯一的选择?
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 );
}
答案 0 :(得分:1)
您可以使用apply
方法并立即推送整个数组。从来没有尝试使用像数组这样的矩阵。
示例:
var tempArray = [], tempArray2 = [];
for(var j = 0, dataLen = data.length; j < dataLen; j++) {
tempArray2.push.apply(tempArray2, data[j]);
tempArray.push(tempArray2), tempArray2 = [];
}
的jsfiddle:
或者如 cookie monster 指出的那样使用slice()
而没有参数会创建一个浅拷贝(它也不会复制引用的值)。
示例:
var tempArray = [];
for(var j = 0, dataLen = data.length; j < dataLen; j++) {
tempArray.push(data[j].slice());
}
只要您的data[j]
中的元素少于~150.000,就会有效。
如果它有更多,你应该使用这个答案中提到的技术:How to extend an existing JavaScript array with another array, without creating a new array?