javascript - recorrer - Array.size() vs Array.length
javascript array methods (7)
¿Cuál es la diferencia entre los dos?
Así que sé que array.size()
es una función, mientras que array.length
es una propiedad. ¿Hay un caso de uso para usar uno sobre el otro? ¿Es uno más eficiente (me imagino que .length
es significativamente más rápido, ya que es una propiedad en lugar de una llamada a un método?) ¿Por qué uno usaría la opción más lenta? ¿Hay algunos navegadores que son incompatibles con uno u otro?
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);
Se imprimirá:
0, 0, true
3, 3, true
Array.size () no es un método válido
Siempre usa la propiedad de longitud
Hay una biblioteca o script que agrega el método de tamaño al prototipo de matriz, ya que este no es un método de matriz nativo. Esto se hace comúnmente para agregar soporte para un getter personalizado. Un ejemplo de uso de esto sería cuando desea obtener el tamaño en la memoria de una matriz (que es lo único en lo que puedo pensar que sería útil para este nombre).
Underscore.js desafortunadamente define un método de size
que en realidad devuelve la longitud de un objeto o matriz. Dado que, desafortunadamente, la propiedad de longitud de una función se define como el número de argumentos con nombre, la función declara que tuvo que usar una alternativa y se eligió el tamaño (el recuento hubiera sido una mejor opción).
El método .size () está en desuso a partir de jQuery 1.8. Utilice la propiedad .length en su lugar
Consulte: https://api.jquery.com/size/
La propiedad ''length'' devuelve la (última_clave + 1) para las matrices con teclas numéricas:
var nums = new Array (); nums [ 10 ] = 10 ; nums [ 11 ] = 11 ; log.info( nums.length );
imprimirá 12!
Esto funcionará:
var nums = new Array (); nums [ 10 ] = 10 ; nums [ 11 ] = 11 ; nums [ 12 ] = 12 ; log.info( nums.length + '' / ''+ Object.keys(nums).length );
.size()
no es una función JS nativa de Array
(al menos no en ningún navegador que yo sepa).
.length
debe utilizar .length
.
Si
.size()
funciona en tu página, asegúrate de no tener bibliotecas adicionales incluidas como prototypejs.org/doc/latest/language/Array/prototype/size que se esté deshaciendo del prototipo Array
.
o
Es posible que haya algún complemento en su navegador que esté mal con el prototipo Array
.
.size()
es jQuery''s, es muy probable que estés confundido o .size()
de otra persona que haya importado la biblioteca jQuery a su proyecto.
Si importara jQuery y escribiera como $(array).size()
, devolvería la longitud del array.
.size()
está en Jquery y en muchas otras bibliotecas.
.length
funciona solo cuando la clave es número. la longitud no funciona con teclas de cadena
.length
funciona bien para este tipo de matriz
var nums = new Array ();
nums [ 0 ] = 1 ;
nums [ 1 ] = 2 ;
print ( nums . length ); // displays 2
.length
no funciona como esta matriz
var pbook = new Array ();
pbook [ "David" ] = 1 ;
pbook [ "Jennifer" ] = 2 ;
print ( pbook . length ); // displays 0
array.length
no es necesariamente el número de elementos en la matriz:
var a = [''car1'', ''car2'', ''car3''];
a[100] = ''car100'';
a.length; // 101
La longitud de la matriz es una más que el índice más alto.
Como se indicó antes, Array.size()
no es un método válido.