IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Passage matrice à plusieurs dimensions à une fonction


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Par défaut Passage matrice à plusieurs dimensions à une fonction
    Bonjour
    je n'ai pas le temps d'apprendre JS, j'ai juste besoin de faire une matrice a plusieurs dimension en JS.
    est ce que quelqu'un aurait la gentillesse de me dire pourquoi, apres le 2 dans la petite fenetre j'ai "undefined" alors que je m'attendais a voir 1234.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <SCRIPT LANGUAGE="javascript">
    function afficher(form2) {
    var testin =document. form2.input.value;
    // One Side Bridge in Java Script
    // var myarray=[["New York", "LA", "Seattle"], China, Japan]
    // myarray[0][1] //returns "LA"
    // var items = [[1,2],[3,4],[5,6]];
    // alert(items[0][0]); // 1
    //rows[rowCount][colCount]
    var nb=8 ;
    var Lin =4 ;
    var Col=nb
    var L=1 ;
    var BlockThickness=0.2;
    var StartingBlock=0.5;
    var StartingBlocky=2;
    var CMj = createArray(Lin, Col);
     
    CMj[0][0]=nb
    CMj[0][1]=L
    CMj[0][2]=BlockThickness
    CMj[0][3]=StartingBlock
    CMj[0][4]=StartingBlocky
     
    document.form2.output.value=showArray(makeCMj.apply(this, CMj));
     
    }
     
     
      function makeCMj(CMj0) {
    	CMj0[0][5]=1234;
            return CMj0 ;
       }
       function showArray(Arr){
            var quote = "";
            for (var i = 0; i < Arr.length; i++){
                quote += Arr[i] + " ";
            }
            return quote;    
       }
     
       function createArray(length) {
        var arr = new Array(length || 0),
            i = length;
     
        if (arguments.length > 1) {
            var args = Array.prototype.slice.call(arguments, 1);
            while(i--) arr[length-1 - i] = createArray.apply(this, args);
        }
     
        return arr;
    }
    </SCRIPT>
    OneArcheBridge.htmlNom : CaptureBridge.GIF
Affichages : 316
Taille : 89,6 Ko

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    N'ayant pas la partie HTML de ton exemple, j'ai simplifié le code présenté à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    var CMj = createArray(4, 8);
     
    var CMj = createArray(4, 8);
     
    CMj[0][0]=8
    CMj[0][1]=1
    CMj[0][2]=0.2
    CMj[0][3]=0.5
    CMj[0][4]=2;
     
    console.log(makeCMj(CMj));
    console.log(showArray(CMj));
     
     
    function makeCMj(CMj0) {
      CMj0[0][5]=1234;
      return CMj0 ;
    }
     
    function createArray(length) {
      var arr = new Array(length || 0),
      i = length;
     
      if (arguments.length > 1) {
        var args = Array.prototype.slice.call(arguments, 1);
        while(i--) arr[length-1 - i] = createArray.apply(this, args);
      }
      return arr;
    }
     
    function showArray(Arr){
      var quote = "";
      for (var i = 0; i < Arr.length; i++){
        quote += Arr[i] + " ";
      }
      return quote;    
    }
    La sortie console correspondante est :
    Citation Envoyé par console
    [[8, 1, 0.2, 5 plus...], [undefined, undefined, undefined, 5 plus...], [undefined, undefined, undefined, 5 plus...], [undefined, undefined, undefined, 5 plus...]]
    8,1,0.2,0.5,2,1234,, ,,,,,,, ,,,,,,, ,,,,,,,
    La première ligne corresponds à l'affiche brute de la matrice que tu manipule. La seconde ligne et la version que tu veux affiché d'après ce que j'ai compris.

    Tu as des undefined dans ta matrice, car celle-ci n'est pas initialisé avec des valeurs par défaut. (Les cellules ne point vers rien)

    Je pense qu'il y a une erreur de manipulation dans ce que tu fait, mais sans le code qui reproduit, pus dur à identifier

    Cordialement,
    Patrick Kolodziejczyk.

    Note : Testé sous Firefox et Chrome, l'affichage brute varie un peu. Mais la sortie de la fonction showArray est la même des deux côtés.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Par défaut
    merci Kolodz
    N'ayant pas la partie HTML de ton exemple, j'ai simplifié le code présenté à ceci :
    si je l'ai jointe,mais un peu dissimulé ! sans le faire exprès !, juste au dessus de l'image de Google Chrome Canary, cela s'appelle : OneArcheBridge.html
    le but de ce bout de code etait juste de tester si quand je passais une matrice a plusieurs dimensions a la fonction
    avec 5 des valeurs initialisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CMj[0][0]=nb
    CMj[0][1]=L
    CMj[0][2]=BlockThickness
    CMj[0][3]=StartingBlock
    CMj[0][4]=StartingBlocky
    quand je modifie cette matrice en lui ajoutant un 6em element dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function makeCMj(CMj0) {
    	CMj0[0][5]=1234;
            return CMj0 ;
       }
    quasi vide (pour l'instant), au retour de ma fonction je retrouve bien ma modification.ce qui n'est pas le cas, je retrouve uniquement les 5 elements initialisés dans le corps du petit programme qui appelle cette fonction, mais pas la 6em: 1234.
    il y a peut etre une notion de passage de matrice avec un pointeur en JS comme en C ou en VB (Byref) pour pouvoir modifier cet objet a l'interieur d'une fonction ?

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 40
    Par défaut
    je crois que la solution de mon probleme est ci dessous , je ne peux pas y couper je vais devoir le lire !
    http://www.snook.ca/archives/javascript/javascript_pass

    autre sujet: dans Google Canary Chrome , je n'arrive pas a modifier le source, je suis obligé de faire mes modifications dans un editeur notepad++ et ensuite d'enregistrer et de faire ouvrir aevc
    Google Canary Chrome pour tester ma modif, ce qui me fait perdre beaucoup de temps. est ce que quelqu'un sait comment on fait pour modifier le source dans Canary ?
    j'ai cherché sans succes

Discussions similaires

  1. passage tableau 2 dimensions à une fonction
    Par zentaf dans le forum C++
    Réponses: 4
    Dernier message: 11/01/2010, 01h36
  2. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  3. Réponses: 6
    Dernier message: 24/12/2004, 16h46
  4. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20
  5. [langage] passage de paramètres à une fonction
    Par BARBIER dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo