2012-04-12 312 views
1

我有一個充滿了數據如下一個JS數組:的JavaScript:轉換一個多維數組爲二維數組

var myarr = [[new Date("2011-12-01"), 389, 380.75, 382.54, 387.93], 
[new Date("2011-11-30"), 382.28, 378.3, 381.29, 382.2]...] 

有一些辦法只能選擇整個日期列,最後一個數字每一行?我正在尋找一個輸出這件事情是這樣的:

[[new Date("2011-12-01"), 387.93],[new Date("2011-11-30"), 382.2]...] 

回答

1
var myCollapsedArr = [[myarr[0][0], myarr[0][myarr[0].length-1]], [myarr[1][0], myarr[1][myarr[1].length-1]]; 

或者在for循環中:

var myCollapsedArr = []; 

for(var i = 0; i<myarr.length; i++) { 
    myCollapsedArr.push([myarr[i], [myarr[i][myarr[i].length-1]]); 
} 
+0

請注意,在循環設置中緩存數組長度是一種很好的做法,否則每次都要重新計算它。速度不是很大,但從來不是一個壞主意。 'for(var i = 0,len = myarr.length; i Phrogz 2012-04-12 13:12:13

+0

謝謝,Elliot。循環工作。雖然我在想,可能會有一些功能,如切片,而不使用循環。乾杯! – Zishan 2012-04-12 13:16:50

+0

@Phrogs:哦,很酷。我會記住的。 =) – 2012-04-12 15:31:56

1

選項1 - 簡單的for循環

// Create array to hold new values 
var newArray = []; 
// Loop through existing array and pull out data 
for(var i = 0; i < myarr.length; i++) { 
    newArray.push([myarr[i][0], myarr[i][myarr[i].length - 1]]); 
} 

這裏的a working fiddle來演示。

選擇2 - 5的ECMAScript forEach()

// Create array to hold new values 
var newArray = []; 

// Loop through existing array and pull out data 
myarr.forEach(function(obj) { 
    newArray.push([obj[0], obj[obj.length - 1]]); 
}); 

這裏的a working fiddle證明。