Javascript Array.size()与Array.length

Javascript Array.size()与Array.length,javascript,arrays,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]; cons

这两者的区别是什么

所以我知道
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
.size()
不是
数组的原生JS函数(至少在我所知道的任何浏览器中都不是)

应使用
.length


如果
.size()
是否对您的页面起作用,请确保没有任何额外的库,因为这样会破坏
阵列
原型

或 您的浏览器上可能有某个插件与
Array
prototype有冲突。

Array.size()不是有效的方法 始终使用长度属性

有一个库或脚本将size方法添加到数组原型中,因为这不是本机数组方法。这通常是为了添加对自定义getter的支持。例如,当您想要获取数组在内存中的大小时(这是我能想到的唯一一件对这个名称有用的事情)

不幸的是,subline.js定义了一个
size
方法,该方法实际返回对象或数组的长度。不幸的是,函数的length属性被定义为函数声明必须使用的命名参数的数量,并且选择了size(count是更好的选择)。

.size()
是jQuery的,很可能您对将jQuery库导入到他的项目中的其他人感到困惑,或者是从他们那里得到的

如果您已经导入并按照
$(array).size()
编写,它将返回数组长度。

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

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

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

var nums = new Array();
nums[0] = 1; 
nums[1] = 2;
print(nums.length); // displays 2
var pbook = new Array(); 
pbook["David"] = 1; 
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0
length
属性不适用于这种类型的数组:

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

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

数组。length
不一定是数组中的项数:

var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101
数组的长度比最高索引长一倍

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

从jQuery 1.8开始,.size()方法就被弃用了。改为使用.length属性


请参阅:

对于带有数字键的数组,属性“length”返回(最后一个\u键+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 );

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

const set1 = new Set([1, 2, 3, 4, 5, 5, 5, 6]);
console.log(set1.size);
// expected output: 6
实际上,
.size()
不是纯JavaScript方法,object有一个accessor属性,看起来有点像
.size()
,但它不是一个函数方法,正如我所说,它是一个Set对象的accessor属性,用于显示Set对象中(唯一)元素的唯一数量

size accessor属性返回集合对象中(唯一)元素的数量

和是iterable对象(数组)的属性,该对象返回该数组中的元素数。该值是一个无符号32位整数,其数值始终大于数组中的最高索引

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

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

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

> set the length: let count = myArray.length;
> return lengthof an array : myArray.length
我们可以为您提供.size,以防我们需要过滤重复值并获取集合中元素的计数


你在本地JavaScript中哪里找到了
Array.size()
方法?Chrome没有
.size
。@AbrahamP idk你正在使用的Chrome控制台…
.size()
很可能来自原型框架:@BartFriederichs我在Chrome中,但很高兴知道:-DIt在Chrome中工作,在Firefox中不工作,我倾向于使用Chrome进行调试,因此它似乎可以工作。感谢您指出它的不存在。如果它在Chrome中为您工作,您可能会在页面上调用一些额外的库,将其添加到数组原型中。版本23.0.1271.97[].size function size(){return this.length;}因此实际上它只是一个围绕.length的包装器。。。我现在有点傻了…@AbrahamP,点击本页F12,在控制台中键入
[].size
。如果它能工作,那么你就有了某种Chrome插件,它正在破坏阵列原型,我会担心的。:)许多库使用
.size()
不仅是jquery,如果size不起作用,还有什么东西可以处理字符串吗?@Chris对于带有字符串键的数组,例如上面的
pbook
,您可以使用
$(pbook).size()[需要jQuery]但是,为什么要在每个地方放置两个空格?实际上,这是项目的数量。大多数JS解释器将用未定义的字符串填充数组行。在您的示例中,数组中有101个元素,其中97个元素没有值(未定义),但有元素。它看起来像:['car1','car2','car3',undefined*97,'car100']如果在这个数组上循环,那么增量变量在循环后的值将是101。另一方面,array.length不一定是数组中已定义(未赋值)值的数目。它恰恰是数组中的项数。这些项目是否未定义取决于程序员,而不是JS。虽然这是一个有趣的答案,但我不完全确定这是否是对这个问题的答案OP问的是“Array.size()vs Array.length”。从前面的讨论中可以清楚地看出,“大小”函数不是标准的一部分