Array.size()vs Array.length

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

Array.size()不是有效的方法

始终使用length属性

有一个库或脚本将size方法添加到数组原型中,因为这不是本机数组方法.这通常用于添加对自定义getter的支持.使用它的一个例子是当你想获得数组内存的大小时(这是我能想到的唯一对这个名称有用的东西).

不幸的是size,Underscore.js定义了一个实际返回对象或数组长度的方法.不幸的是,函数的长度属性被定义为函数声明的命名参数的数量,他们必须使用替代方法并选择大小(计数将是更好的选择).


Nea*_*eal 149

.size()不是土生土长JS功能Array(至少在我所知道的任何浏览器).

.length 应该使用.


如果

.size() 确实在您的页面工作,确保您没有包含任何额外的库,例如原型中的Array原型.

要么

您的浏览器上可能有一些插件正在混淆Array原型.

  • 如果它适用于您的Chrome,您可能会在页面上调用一些额外的库,将其添加到Array原型中. (8认同)
  • 版本 23.0.1271.97 [].size function size(){return this.length;} 所以实际上它只是围绕 .length 的一个包装......我现在有点觉得愚蠢...... (2认同)
  • @AbrahamP,在此页面上点击F12,然后在控制台中输入`[] .size`.如果它有效,那么你有一些Chrome插件正在捣乱阵列原型,我会担心的.:) (2认同)

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)

  • 但是,为什么还要在各处放置两​​个空格? (3认同)
  • @Chris用于带有字符串键的数组,例如上面的`pbook`,您可以使用`$(pbook).size();`[需要jQuery] (2认同)

Jul*_*res 19

.size() 是jQuery的,很可能你要么把其他人导入jQuery库,要么把它带到他的项目中.

如果你已经导入了jQuery并且你写了$(array).size(),那么它将返回数组长度.


小智 15

array.length 不一定是数组中的项数:

var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101
Run Code Online (Sandbox Code Playgroud)

数组的长度比最高索引多一个.

如前所述,Array.size()这不是一种有效的方法.

更多信息


csk*_*kwg 9

对于带有数字键的数组,属性 '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)