【发布时间】:2010-02-04 10:58:23
【问题描述】:
这和这个问题类似,只有 PHP->javascript
【问题讨论】:
标签: javascript arrays
这和这个问题类似,只有 PHP->javascript
【问题讨论】:
标签: javascript arrays
var foo = myarray[myarray.length - 1];
首选术语是元素,而不是键。
编辑:或者你的意思是最后一个索引?那是myarray.length - 1。请记住,JavaScript 数组只能以数字方式索引(尽管数组也是对象,这会导致一些混乱)。
【讨论】:
如果是平面数组,可以这样做:
return array.length - 1;
但是,如果您有一个关联数组,则您必须知道键并循环遍历它。请注意,尽管 JavaScript 不知道“关联数组”之类的东西,因为 JavaScript 中的大多数元素都是对象。
免责声明: JavaScript 中关联数组的用法是 generally not a good practice,可能会导致问题。
var x = new Array();
x['key'] = "value";
for (i in x)
{
if (i == 'key')
{
alert ("we got "+i);
}
}
【讨论】:
Array?你没有使用它的数组(即神奇的length 属性),所以你不妨使用Object。此外,在使用for...in 循环时,JavaScript 规范不保证键的顺序,因此没有“最后一个键”之类的东西
Array 中获取密钥,这就是原因(尽管它在技术上仍然是Object)。可能有更精细的方法可以做到这一点。
首先抱歉英语不好。 假设您的数组是带有数字格式的字符串键的“键关联数组”。 您将需要 3 个步骤: 获取所有数组键。 将数组键转换为整数。 获取最大或长度或任何其他键属性。
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是一个数组的名字。
这是基于您提到的问题的解决方案。假设数组是一维数组或所有数组键都是数字。
阅读: Math.max、Array.prototype.keys()、Iterators and generators
【讨论】: