2013-08-26 3 views
0

J'ai un problème très étrange avec la console js en chrome, si je vais dans la console chrome et écrire:longueur du tableau dans l'erreur chrome Javascript

var numero = new Array(["/php/.svn/tmp", "/php/.svn/props"]); 

me retourner « undefined » Je pense donc que numero est un tableau avec 2 éléments, mais si j'écrire:

numero 

rendements:

[Array[2]] 

après

numero.length 

et de retourner 1 ... pourquoi? ne reviens pas 2 ??? Où est-ce que je fais mal? puis-je donner une méthode qui renvoie 2? merci d'avance

EDIT: Je vais expliquer mon problème. j'ai une fonction qui retourne quand i sélectionné 2 articles:

myFolders.getSelected() 
["/php/.svn", "/php/upload.php"] 

et ceci lors de la sélection d'un des éléments:

myFolders.getSelected() 
"/php/upload.php" 

comme u noter que le second est pas un tableau.

maintenant j'utiliser cette méthode pour activer sur l'élément sélectionné de modification d'un calcul une variable globale:

function calcoloNumeroElementi(){ 
    var numero = new Array(myFolders.getSelected()); 
    numeroElementiSelezionati = numero[0].length; 
} 

mais retourne toujours 1 ou le nombre de caractères quand je choisis un seul éléments.

+0

Ne faites pas 'new Array ([ 'fdsf', 'dfsfd']);', laissez le '[' et ']', il suffit de faire 'new Array ('sdfdsfsd', 'fsdfsdfs');' à la place – Markasoftware

+0

Votre méthode '.getSelected()' est * retournant un tableau *; aucune raison d'envelopper sa valeur de retour dans 'new Array()'. –

Répondre

1

Ne pas utiliser New Array, utilisez la notation juste littérale:

var numero = ["/php/.svn/tmp", "/php/.svn/props"]; 

Mise à jour (Basé sur vos commentaires)

Si vous avez votre fonction myFolders.getSelected() qui retourne une seule chaîne et que vous voulez ajouter à tableau, vous pouvez le faire soit déclarative:

var numero = [myFolders.getSelected()] 

Ou, si vous envisagez d'ajouter plusieurs valeurs, par exemple dans une boucle, vous pouvez pousser une nouvelle valeur dans un tableau

var numero = []; 
... 
numero.push(myFolders.getSelected()); 
+0

oui mais essayez ceci 'var numero = myFolders.getSelected(); non définie numero "/php/.svn/tmp" numero.length 13' – r1si

+0

Qu'est-ce 'myFolders.getSelected();'? Si elle renvoie String, alors "numero.length" retournera la longueur de cette chaîne en caractères, cette fois-ci. Les tableaux ne sont pas impliqués –

+0

@ r1si a ajouté une variation de code possible en supposant que 'myFolders.getSelected()' retourne une chaîne. S'il renvoie d'autres types, veuillez spécifier –

6

Vous créez un array dans d'autres array, c'est pourquoi il retourne 1.

console.log(numero[0].length); // 2 

Il doit donc être:

var numero = ["/php/.svn/tmp", "/php/.svn/props"]; 

ou

var numero = new Array("/php/.svn/tmp", "/php/.svn/props"); // without `[` and `]` 

Ensuite, utilisez console.log(numero.length);

+0

fonctionne comme une réclamation pour 2 éléments: return 2 mais avec un seul tableau d'éléments ne fonctionne pas .... retourner le nombre de chararpters – r1si

+0

@ r1si Utilisez 'console.log (numero.length);' après les modifications. –

0

["/php/.svn/tmp", "/php/.svn/props"] retourne un tableau contenant les deux chaînes.

new Array(arg0, arg1 ... argn); retourne un tableau avec des éléments définis comme les arguments

new Array(["/php/.svn/tmp", "/php/.svn/props"]); retourne un tableau dans lequel les premiers éléments et est tableau de deux chaînes.

Essayez plutôt numero[0].length et voyez ce que vous obtenez.

Ou istead définir votre tableau comme ce var numero = ["/php/.svn/tmp", "/php/.svn/props"];

Questions connexes