这与这个问题类似,只是从PHP转到了JavaScript
var foo = myarray[myarray.length - 1];
首选术语为元素,而不是键。myarray.length - 1
。请记住,JavaScript数组只能按数字索引(尽管数组也是对象,这会导致一些混淆)。return array.length - 1;
但是,如果你有一个关联数组,你需要知道键并循环遍历它。请注意,JavaScript 并没有"关联数组"这样的东西,因为 JavaScript 中的大多数元素都是对象。
免责声明: 在 JavaScript 中使用关联数组通常不是一个好习惯,并可能导致问题。(参考链接)
var x = new Array();
x['key'] = "value";
for (i in x)
{
if (i == 'key')
{
alert ("we got "+i);
}
}
Array
?如果您没有使用其数组特性(即神奇的“length”属性),那么最好使用Object
。此外,JavaScript规范在使用for...in
循环时不保证键的顺序,因此不存在“最后一个键”的概念。 - Tim DownArray
中获取键,这就是为什么(尽管它在技术上仍然是一个Object
)。可能有更精细的方法来做到这一点。 - Aron Rotteveel我假设你的数组是一个“关联键”数组,其键为数字格式的字符串。
stringKeys = Object.keys(keyValueArray); // Get keys of array
integerKeys = stringKeys.map(Number); // Convert to integer
mx = Math.max.apply(integerKeys); // Get max
len = stringKeys.length; // Get length
希望我能为您提供帮助
arr.length-1
,因为数组始终以键0
开始。var arr = new Array(3); // arr === [], arr.length === 3
arr.push(0); // arr === [undefined, undefined, undefined, 0], arr.length === 4
arr[arr.length-1] // returns 0
var arr = []; // arr === [], arr.length === 0
arr[3] = 0; // arr === [undefined, undefined, undefined, 0], arr.length === 4
arr[arr.length-1] // returns 0
Math.max(...[...myArray.keys()]);
这里myArray
是一个数组的名称。
这是基于您提出的问题的解决方案。假设该数组是单维数组或所有数组键都是数字。