469 Stimmen

Array.size() vs Array.length

Worin besteht der Unterschied zwischen den beiden?

Ich weiß also, dass array.size() ist eine Funktion, während array.length ist eine Eigenschaft. Gibt es einen Anwendungsfall, bei dem das eine mehr als das andere verwendet wird? Ist die eine effizienter? (Ich könnte mir vorstellen .length wesentlich schneller sein, da es sich um eine Eigenschaft und nicht um einen Methodenaufruf handelt?) Warum sollte man überhaupt die langsamere Option verwenden? Gibt es einige Browser, die mit dem einen oder dem anderen nicht kompatibel sind?

  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);

Wird gedruckt:

  0, 0, true
  3, 3, true

619voto

Gabriel Punkte 17644

Array.size() ist keine gültige Methode

Verwenden Sie immer die Eigenschaft length

Es gibt eine Bibliothek oder ein Skript, das dem Array-Prototyp die Methode size hinzufügt, da es sich nicht um eine native Array-Methode handelt. Dies wird üblicherweise getan, um Unterstützung für einen benutzerdefinierten Getter hinzuzufügen. Ein Beispiel für die Verwendung dieser wäre, wenn Sie die Größe im Speicher eines Arrays (das ist die einzige Sache, die ich mir vorstellen kann, dass für diesen Namen nützlich sein würde) erhalten möchten.

Underscore.js definiert leider eine size Methode, die tatsächlich die Länge eines Objekts oder Arrays zurückgibt. Da leider die Längeneigenschaft einer Funktion als die Anzahl der benannten Argumente definiert ist, die die Funktion deklariert, musste eine Alternative verwendet werden, und es wurde size gewählt (count wäre eine bessere Wahl gewesen).

186voto

Naftali Punkte 141792

.size() est no eine native JS-Funktion von Array (zumindest in keinem Browser, den ich kenne).

.length devrait verwendet werden.


Si

.size() tut auf Ihrer Seite arbeiten, vergewissern Sie sich, dass Sie keine zusätzlichen Bibliotheken eingebunden haben wie Prototyp der mit der Array Prototyp.

ou

Möglicherweise gibt es ein Plugin in Ihrem Browser, das die Array Prototyp.

39voto

En .size() Funktion ist in Jquery und vielen anderen Bibliotheken verfügbar.

En .length funktioniert nur, wenn der Index eine ganze Zahl ist.

En length Eigenschaft wird mit dieser Art von Array arbeiten:

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

En length Eigenschaft wird nicht mit dieser Art von Array arbeiten:

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

In Ihrem Fall sollten Sie also die .length Eigentum.

21voto

Julio Flores Punkte 435

.size() ist jQuery's, viel wahrscheinlich sind Sie entweder verwechseln mit oder nahm von jemand anderem, der die jQuery-Bibliothek in sein Projekt importiert hatte.

Hätten Sie jQuery importiert, und Sie würden wie folgt schreiben $(array).size() wird die Länge des Arrays zurückgegeben.

19voto

user2811108 Punkte 191

array.length ist nicht unbedingt die Anzahl der Elemente im Array:

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

Die Länge des Arrays ist um eins größer als der höchste Index.

Wie bereits erwähnt Array.size() ist keine gültige Methode.

Weitere Informationen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X