Qual é a diferença entre os dois?
Então eu sei que array.size()
é uma função enquanto array.length
é uma propriedade. Existe uma maneira de usar um sobre o outro? Mais um é eficiente? (Eu imaginaria .length
ser significativamente mais rápido, pois é uma propriedade e não uma chamada de método?) Por que alguém usaria a opção mais lenta? Existem alguns navegadores incompatíveis com um ou outro?
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);
Irá imprimir:
0, 0, true
3, 3, true
javascript
arrays
Abraham P
fonte
fonte
Array.size()
método no JavaScript nativo?.size
....size()
É provável da estrutura Prototype: prototypejs.org/doc/latest/language/Array/prototype/sizeRespostas:
Array.size () não é um método válido
Sempre use a propriedade length
Há uma biblioteca ou script adicionando o método size ao protótipo de matriz, pois esse não é um método de matriz nativo. Isso geralmente é feito para adicionar suporte a um getter personalizado. Um exemplo disso é quando você deseja obter o tamanho na memória de uma matriz (que é a única coisa em que posso pensar que seria útil para esse nome).
Infelizmente, o Underscore.js define um
size
método que realmente retorna o comprimento de um objeto ou matriz. Como, infelizmente, a propriedade length de uma função é definida como o número de argumentos nomeados, a função declara que eles devem usar uma alternativa e o tamanho foi escolhido (a contagem seria uma escolha melhor).fonte
.size()
não é uma função JS nativa doArray
(pelo menos não em qualquer navegador que eu conheça)..length
deve ser usado.E se
.size()
faz o trabalho na sua página, certifique-se que você não tem quaisquer bibliotecas extras incluídos como protótipo que é mucking com oArray
protótipo.ou
Pode haver algum plug-in no seu navegador que esteja mexendo com o
Array
protótipo.fonte
[].size
o console. Se funcionar, você tem algum tipo de plug-in do Chrome que está mexendo com o protótipo Array, e eu ficaria preocupado. :)A
.size()
função está disponível no Jquery e em muitas outras bibliotecas.A
.length
propriedade funciona apenas quando o índice é um número inteiro.A
length
propriedade vai trabalhar com este tipo de matriz:A
length
propriedade não funcionará com este tipo de matriz:Portanto, no seu caso, você deve usar a
.length
propriedadefonte
pbook
acima, você pode usar$(pbook).size();
[exige jQuery].size()
é do jQuery, muito provavelmente você está confundindo ou retirando de alguém que importou a biblioteca do jQuery para o projeto dele.Se você tivesse o jQuery importado e escreveria assim
$(array).size()
, retornaria o comprimento da matriz.fonte
.size()
não só é jqueryarray.length
não é necessariamente o número de itens na matriz:O comprimento da matriz é um a mais que o índice mais alto.
Como afirmado anteriormente,
Array.size()
não é um método válido.Mais Informações
fonte
A propriedade 'length' retorna a (last_key + 1) para matrizes com chaves numéricas:
imprimirá 12!
Isso funcionará:
fonte
O método .size () está obsoleto a partir do jQuery 1.8. Use a propriedade .length
Veja: https://api.jquery.com/size/
fonte
O tamanho detecta duplicatas, retornará o número de valores exclusivos
fonte
Na verdade,
.size()
não é um método JavaScript puro, há uma propriedade acessadora.size
do objeto Set que parece um pouco,.size()
mas não é um método funcional, assim como eu disse, é uma propriedade acessadora de um objeto Set para mostrar o número único de elementos (exclusivos) em um objeto Set.E
length
é uma propriedade de um objeto iterável (matriz) que retorna o número de elementos nessa matriz. O valor é um número inteiro de 32 bits não assinado que é sempre numericamente maior que o índice mais alto da matriz.fonte
podemos usar a propriedade .length para definir ou retornar o número de elementos em uma matriz. valor de retorno é um número
podemos usar .size, caso seja necessário filtrar valores duplicados e obter a contagem de elementos em um conjunto.
fonte