在JavaScript中计算绝对数组长度的最佳方法是什么?
只是想知道,当您使用在JavaScript中计算绝对数组长度的最佳方法是什么?,javascript,Javascript,只是想知道,当您使用array.length时,它会获取最后一个索引值并添加一个。如果您有一个数组,它是由于某种原因以这种方式定义的: var myArray2 =[]; myArray2[10]='x'; myArray2[55]='x'; 获取此数组的真实长度的绝对最佳方法是什么?返回2作为值的内容 我是这样想的,但不确定是否已经有了这样的方法,或者是否有更快的实现 Array.prototype.trueLength= function(){ for(va
array.length
时,它会获取最后一个索引值并添加一个。如果您有一个数组,它是由于某种原因以这种方式定义的:
var myArray2 =[];
myArray2[10]='x';
myArray2[55]='x';
获取此数组的真实长度的绝对最佳方法是什么?返回2作为值的内容
我是这样想的,但不确定是否已经有了这样的方法,或者是否有更快的实现
Array.prototype.trueLength= function(){
for(var i = 0,ctr=0,len=myArray2.length;i<len;i++){
if(myArray2[i]!=undefined){
ctr++;
}
}
return ctr;
}
console.log(myArray2.trueLength());
Array.prototype.trueLength=function(){
for(var i=0,ctr=0,len=myArray2.length;i使用for in
迭代数组
替代原型方法:
Array.prototype.trueLength= function(){
var list= [], ctr = 0, array = this;
for(var i in array) (function(arr) {
if(array.hasOwnProperty(i)){
list.push(arr);
ctr++;
};
}(array[i]));
return {length: ctr, "list": list}
}
样本:
var myArray2 =[];
myArray2[10]='44';
myArray2[55]='55';
// list not undefined
myArray2.trueLength().list // ["44", "55"]
// not undefined length list
myArray2.trueLength().length // 2
我会使用:
函数getArrayPropertyCount(arr){
var计数=0;
对于(变量i=0,len=arr.length;i
仅遍历现有索引,因此您可以执行以下操作:
var length = myArray2.reduce(function(sum) {
return sum+1;
}, 0);
“但是齐拉克叔叔!reduce
杀了我的父母!”别担心,年轻人,我们可以使用Array.prototype.filter
var length = myArray2.filter(function(item, idx) {
return idx in myArray2;
}).length;
“所有这些阵列的东西都很无聊!”好吧,你觉得怎么样
Object.keys(myArray2).length;
“但是……但是……但是Zirak!!!!我们是阿米什人,我们还没有ECMAScript 5!”不要害怕,Zirak在这里
for (var length = 0, i = 0; i < myArray2.length; i++) {
if (i in myArray2) {
length += 1;
}
}
for(var-length=0,i=0;i
但在这种情况下,人们不禁要问:为什么所有这些都违背了数组(一种结构化构造)的目的,而不使用其他适合其目的的东西?函数TrueArrayLength(myArray2)
function TrueArrayLength (myArray2)
{
var TrueLength = 0;
for ( var i = 0; i < myArray2.length; i++)
{
if (i in myArray2)
{
TrueLength += 1;
}
}
return TrueLength;
}
{
var-TrueLength=0;
对于(var i=0;i
使用此函数并获得真实的数组长度。Nice。当然,您需要为IE实现
array.prototype.reduce
9@TimDown补偿了这一点(还有更多)但是齐拉克叔叔,我还得和老艾一起工作。这意味着我是阿米什人吗?@TimDown仅仅因为所有的苹果都是水果,并不能让所有的水果都变成苹果。没错,有些水果也可以是柠檬!
for (var length = 0, i = 0; i < myArray2.length; i++) {
if (i in myArray2) {
length += 1;
}
}
function TrueArrayLength (myArray2)
{
var TrueLength = 0;
for ( var i = 0; i < myArray2.length; i++)
{
if (i in myArray2)
{
TrueLength += 1;
}
}
return TrueLength;
}