web-dev-qa-db-fra.com

Array.size () vs Array.length

Quelle est la différence entre les deux?

Je sais donc que array.size() est une fonction alors que array.length est une propriété. Existe-t-il un cas d'utilisation pour utiliser l'un sur l'autre? Est-ce qu'on est plus efficace (j'imagine que .length est beaucoup plus rapide, puisqu'il s'agit d'une propriété plutôt que d'un appel à une méthode?) Pourquoi utiliserait-on jamais l'option plus lente? Existe-t-il des navigateurs incompatibles avec l'un ou l'autre?

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

Imprimera:

  0, 0, true
  3, 3, true
356
Abraham P

Array.size () n'est pas une méthode valide

Toujours utiliser la propriété de longueur

Une bibliothèque ou un script ajoute la méthode size au prototype de tableau car il ne s'agit pas d'une méthode de tableau natif. Ceci est couramment fait pour ajouter un support pour un getter personnalisé. Un exemple d'utilisation de ce serait lorsque vous voulez obtenir la taille en mémoire d'un tableau (ce qui est la seule chose que je peux penser qui serait utile pour ce nom).

Underscore.js définit malheureusement une méthode size qui renvoie en réalité la longueur d'un objet ou d'un tableau. Comme, malheureusement, la propriété de longueur d’une fonction est définie comme le nombre d’arguments nommés, la fonction déclare qu’elle devait utiliser une alternative et la taille a été choisie (le nombre aurait été meilleur).

491
Gabriel

.size() est not une fonction JS native de Array (du moins dans aucun navigateur que je connaisse).

.lengthdevrait être utilisé.


Si

.size()ne fonctionne sur votre page. Assurez-vous de ne pas inclure de bibliothèques supplémentaires, telles que prototype qui corrode avec le prototype Array

ou

Votre navigateur peut contenir un plugin en train de nettoyer le prototype Array.

145
Neal

.size() se trouve dans Jquery et dans de nombreuses autres bibliothèques.

.length fonctionne uniquement lorsque la clé est un numéro. La longueur ne fonctionne pas avec les clés de chaîne

.length fonctionne bien pour ce type de tableau 

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

.length ne fonctionne pas comme ce tableau 

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

.size() est celui de jQuery, vous confondez probablement avec quelqu'un d'autre qui a importé la bibliothèque jQuery dans son projet.

Si vous aviez jQuery importé et que vous écriviez comme $(array).size(), la longueur du tableau serait renvoyée.

19
Julio Flores

array.length n'est pas nécessairement le nombre d'éléments dans le tableau:

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

La longueur du tableau est supérieure de un à l'index le plus élevé.

Comme indiqué précédemment, Array.size() n'est pas une méthode valide.

Plus d'information

12
user2811108

La taille détecte les doublons, elle retournera le nombre de valeurs uniques

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

La méthode .size () est obsolète à partir de jQuery 1.8. Utilisez la propriété .length à la place

Voir: https://api.jquery.com/size/

1
Davy

La propriété 'longueur' renvoie le (last_key + 1) pour les tableaux avec des touches numériques:

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

imprimera 12!

Cela fonctionnera:

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