2013-10-20 77 views
0

我有一个数组。它由10个数组组成。如何获取数组数组的最后一个数字?

var arr = [[], [], [], [], [], [], [], [], [], []]; 

这10个阵列中的每一个都有不同数目的数字。我想获得这10个数组中的最后一个数字。

我试图做这样的方式:

var lastNums = []; 
var i = 0; 
var j = 0; 
for (var k = 0; k < 10; k++) { 
    i = arr[k].length - 1;  //This code gets number of the last number 
    lastNums[j] = arr[k][i]; 
    j++; 
} 

但它似乎并不工作。在Chrome浏览器控制台,我得到:

TypeError: Cannot read property 'length' of undefined

+0

这意味着你不必在'ARR [K]',而不是一个数组 – Hogan

+0

你确定你在相同的代码中定义ARR的未定义的对象?它应该工作。 顺便说一句,如果你的数组是空的,你将收到undefined –

+1

对我来说很好:[fiddle](http://jsfiddle.net/MXaxh/)。你确定你的数组是有效的? – Sirko

回答

0
var arr = [[1,2,3], [4,5,6,7], [8,5,6], [1,6,4,2], [8,6,3,2], [4,5,7,8], [5,4,2,2,1], [5,6,7], [4], [8,8]]; 
var lastNums = []; 
for(var i=0;i<arr.length;i++){ 
    if(arr[i].length > 0){ 
     lastNums.push(arr[i][arr[i].length-1]); 
    } 
} 
alert(lastNums); 
2

如果没有定义阵列ARR的错误,你可以这样做:

lastNumbers = arr.map(function(k){ 
    return k[k.length - 1]; 
}) 

现在lastNumbers阵列将持有每个数组的最后一个数字在arr。 使用内建的数组映射函数的好处在于,您不需要关心数组的大小 。上述解决方案适用于任何阵列长度的 。

相关问题