• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

Há algum método que devolve o número de atributos de um objecto?

13 mensagens neste tópico

a pergunta é essa.

a="a,b,v,asd,s,sasd";
elementos = a.split(',');

como é que obtenho o número de elementos? Há alguma forma mais imediata do que fazer um ciclo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nelems = elementos.length;

Isso não faz o que eu perguntei. Isso devolve o número de caracteres de uma string.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não faz o que eu perguntei. Isso devolve o número de caracteres de uma string.

No meu browser (Iceweasel 2.0.0.16) faz o que tu perguntaste.

Amanhã, experimento no Internet Explorer e no Firefox (o Firefox tem obrigação de ser igual ao Iceweasel).

Hmmm ... a esta hora não consigo interpretar a referência do JavaScript que eu uso

http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Array_Object

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens a certeza? Ao usares o .split() vai ser criado um array com os elementos e o length dá o tamanho do array...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

javascript:alert("a,b,c,c,dddd".split(",").length)

No firefox devolve 5.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

javascript:alert("a,b,c,c,dddd".split(",").length)

No firefox devolve 5.

no Chrome, Opera, Safari e IE7 também

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, as minhas desculpas... eu é que perguntei uma coisa e afixei código que não corresponde propriamente ao que eu perguntei.

Já descobri o problema:

a="a";

a.t=4;

a.q=5;

a.r=6;

document.write(a.length); //<---- imprime 1

Mas no caso que eu afixei acima tambem não quero contar o número de atributos de um objecto, quero sim o número de elementos de um objecto do tipo array que é o que a função split devolve. E aí é de facto como voces estão a dizer.

Eu até não desgosto do javascript enquanto linguagem, mas isto é estúpido, recorrer a um objecto que não é uma estrutura base da linguagem para coisas tão simples não é propriamente um desenho muito rigoroso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o teu problema é o problema. Nunca vi ninguém precisar de contar o número de atributos de um objecto. Depois dizes que queres contar o nº de elementos retornados da função split, mas a resposta para isso já tens: ela retorna um array e o nº de elementos de um array é dado pelo atributo length (qualquer array)... que queres tu fazer afinal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>test properties</title>
  <script type="text/javascript">
  function test_properties() {
    var exemplo = new Object();
    exemplo.t = 2;
    exemplo.r = 3;
    exemplo.s = 5;
    exemplo.value = 1234567;
    exemplo.text = "12345678901";

    var k = 0;
    for (property in exemplo) ++k;

    var result = "";
    result += ' Properties: ' + k + '\n';
    result += '     length: ' + exemplo.length + '\n';
    result += 'text.length: ' + exemplo.text.length + '\n';
    return result;
  }
  </script>
</head>
<body onload="document.getElementById('result').innerHTML = test_properties()">
  <pre id="result"></pre>
</body>
</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que o teu problema é o problema. Nunca vi ninguém precisar de contar o número de atributos de um objecto. Depois dizes que queres contar o nº de elementos retornados da função split, mas a resposta para isso já tens: ela retorna um array e o nº de elementos de um array é dado pelo atributo length (qualquer array)... que queres tu fazer afinal?

Lê o tópico SFF.

pmg, pois, foi essa a conclusão a que eu já tinha chegado e que referi no último post.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Lê o tópico SFF.

O código do pmg conta o número de atributos de um objecto, que é o que dizes que não queres fazer :

tambem não quero contar o número de atributos de um objecto

Dizes que

quero sim o número de elementos de um objecto do tipo array

e essa resposta já tens... continuo sem perceber o que é que pretendes ou onde é que queres chegar, explica-me lá SFF como se eu fosse(?) muito burro...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei como explicar melhor, não leste foi com atenção os meus posts neste tópico.

Eu referi desde o primeiro post que havia a solução do ciclo, estava apenas a perguntar se existe algum método que devolve o número de atributos de um objecto. Pelos vistos não há, mas afinal de contas tambem não é preciso para mim neste caso pois a função split afinal de contas não devolve um objecto genérico com vários atributos mas sim um objecto do tipo array com vários elementos.

e essa resposta já tens... continuo sem perceber o que é que pretendes ou onde é que queres chegar, explica-me lá SFF como se eu fosse(?) muito burro...

Eu já disse no meu segundo post que a resposta dada inicialmente é de facto a o que afinal de contas preciso e até já pedi desculpas pela imprecisão no post de abertura. Não sei como ser mais claro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora