Array.size()vs Array.length

时间:2013-01-07 19:21:13

标签: 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);

将打印:

  0, 0, true
  3, 3, true

10 个答案:

答案 0 :(得分:503)

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

始终使用长度属性

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

不幸的是,

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

答案 1 :(得分:147)

.size() Array的原生JS功能(至少在我所知的任何浏览器中都没有)。

.length 应该


如果

.size() 在您的网页上工作,请确保您没有包含任何额外的库,例如prototype,其中包含{ {1}}原型。

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

答案 2 :(得分:28)

Jquery和许多其他库中提供了.size()函数。

.length属性仅在索引为整数时才有效。

length属性使用此类型的数组:

var nums = new Array();
nums[0] = 1; 
nums[1] = 2;
print(nums.length); // displays 2

length属性赢了可以使用这种类型的数组:

var pbook = new Array(); 
pbook["David"] = 1; 
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0

因此,在您的情况下,您应该使用.length属性。

答案 3 :(得分:19)

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

如果您已导入jQuery并且您编写的内容类似$(array).size(),则会返回数组长度。

答案 4 :(得分:12)

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

var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101

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

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

More information

答案 5 :(得分:3)

从jQuery 1.8开始不推荐使用.size()方法。请改用.length属性

请参阅:https://api.jquery.com/size/

答案 6 :(得分:1)

属性'length'返回具有数字键的数组的(last_key + 1):

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ; 
nums [ 11 ]  =  11 ;
log.info( nums.length );

将打印12!

这将起作用:

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ; 
nums [ 11 ]  =  11 ;
nums [ 12 ]  =  12 ;
log.info( nums.length + '  /  '+ Object.keys(nums).length );

答案 7 :(得分:1)

大小检测到重复项,它将返回唯一值的数量

const set1 = new Set([1, 2, 3, 4, 5, 5, 5, 6]);
console.log(set1.size);
// expected output: 6

答案 8 :(得分:0)

实际上,.size()不是纯JavaScript方法,.size对象有一个访问器属性Set,看上去有点像.size(),但它不是一个函数就像我说的,方法是Set对象的访问器属性,用于显示Set对象中(唯一)元素的唯一数量。

size访问器属性返回Set对象中(唯一)元素的数量。

const set1 = new Set();
const object1 = new Object();

set1.add(42);
set1.add('forty two');
set1.add('forty two');
set1.add(object1);

console.log(set1.size);
// expected output: 3

length是可迭代对象(数组)的属性,该对象返回该数组中的元素数。该值是一个无符号的32位整数,在数值上总是大于数组中的最高索引。

const clothing = ['shoes', 'shirts', 'socks', 'sweaters'];

console.log(clothing.length);
// expected output: 4

答案 9 :(得分:0)

我们可以使用 .length 属性设置或返回数组中的元素数量。 返回值是一个数字

> set the length: let count = myArray.length;
> return lengthof an array : myArray.length

如果需要过滤重复值并获取集合中元素的数量,我们可以调整大小。

const set = new set([1,1,2,1]); 
 console.log(set.size) ;`