Abr*_*m P 375 javascript arrays
两者有什么区别?
所以我知道这array.size()是一个功能而array.length属性.是否有用于使用其中一个的用例?是一个更有效(我会想象.length明显更快,因为它是一个属性而不是方法调用?)为什么一个人会使用较慢的选项?是否有某些浏览器与其中一个不兼容?
var x = [];
console.log(x.size());
console.log(x.length);
console.log(x.size()==x.length);
x =[1,2,3];
console.log(x.size());
console.log(x.length);
console.log(x.size()==x.length);
Run Code Online (Sandbox Code Playgroud)
将打印:
0, 0, true
3, 3, true
Run Code Online (Sandbox Code Playgroud)
Gab*_*iel 518
始终使用length属性
有一个库或脚本将size方法添加到数组原型中,因为这不是本机数组方法.这通常用于添加对自定义getter的支持.使用它的一个例子是当你想获得数组内存的大小时(这是我能想到的唯一对这个名称有用的东西).
不幸的是size,Underscore.js定义了一个实际返回对象或数组长度的方法.不幸的是,函数的长度属性被定义为函数声明的命名参数的数量,他们必须使用替代方法并选择大小(计数将是更好的选择).
Nea*_*eal 149
.size()是不是土生土长JS功能Array(至少在我所知道的任何浏览器).
.length 应该使用.
.size() 确实在您的页面上工作,确保您没有包含任何额外的库,例如原型中的Array原型.
您的浏览器上可能有一些插件正在混淆Array原型.
Sau*_*tel 29
.size() 在Jquery和许多其他库中.
.length仅当密钥是数字时才工作.长度不适用于字符串键
length 适用于这种类型的阵列
var nums = new Array();
nums[0] = 1;
nums[1] = 2;
print(nums.length); // displays 2
Run Code Online (Sandbox Code Playgroud)
length 不像这个数组一样工作
var pbook = new Array();
pbook["David"] = 1;
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0
Run Code Online (Sandbox Code Playgroud)
小智 15
array.length 不一定是数组中的项数:
var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101
Run Code Online (Sandbox Code Playgroud)
数组的长度比最高索引多一个.
如前所述,Array.size()这不是一种有效的方法.
对于带有数字键的数组,属性 'length' 返回 (last_key + 1):
var nums = new Array ();
nums [ 10 ] = 10 ;
nums [ 11 ] = 11 ;
log.info( nums.length );
Run Code Online (Sandbox Code Playgroud)
将打印 12!
这将起作用:
var nums = new Array ();
nums [ 10 ] = 10 ;
nums [ 11 ] = 11 ;
nums [ 12 ] = 12 ;
log.info( nums.length + ' / '+ Object.keys(nums).length );
Run Code Online (Sandbox Code Playgroud)