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 :

Comparaison de 2 tableau


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Comparaison de 2 tableau
    Bonjour,
    J'ai un problème sur mon script (ci-dessous) au niveau de la comparaison de 2 tableaux.
    J'ai un tableau (scFileOCMQ.ext_lineitems) prédéfini sur lequel je veux sauvegarder les données initiales (dans la variable : arrayold).
    Ensuite je traite mon 1er tableau et je veux ensuite sauvegarder (.doSave()) uniquement si mes 2 tableaux sont différents.

    Mes logs :
    tableau initial arrayold : [C++ object Datum] - {{["Q1036-001", "Mise en place application CRA", "EXT005", '03/16/10 00:00:00', "Q1036", ]}}
    arrayold : [C++ object Datum] - {{["Q1036-001", "Mise en place application CRA", "EXT005", '08/13/10 00:00:00', "Q1036", ]}}
    tableau final : [C++ object Datum] - {{["Q1036-001", "Mise en place application CRA", "EXT005", '08/13/10 00:00:00', "Q1036", ]}}
    et pas de "SAVE"


    Mon problème.
    - Mon tableau "arrayold" change de valeur pendent la traitement. Pourquoi?
    - Ma comparaison ne fonctionne pas même si je change le "!=" par "=="

    Quelqu'un peut-il m'aider, car là je suis bloqué?
    Merci d'avance

    Xavier

    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
    var scFileOCMQ = new SCFile("ocmq");
    var scFileOCMQRC = scFileOCMQ.doSelect("number=\""+system.vars.$file.number+"\"");	
     
    var arrayold = new Array();
    arrayold = scFileOCMQ.ext_lineitems;
    print ("tableau initial arrayold : "+arrayold);
     
    if (scFileOCMQRC == RC_SUCCESS)
    {
    	var scFileOCML = new SCFile("ocml");
    	var scFileOCMLRC = scFileOCML.doSelect("parent.quote=\""+system.vars.$file.number+"\"");
     
    	if (scFileOCMLRC == RC_SUCCESS)
    	{
    		var i=0;
    		do
    		{
    			print ("trouvé item n"+ scFileOCML.number); 
     
    			scFileOCMQ.ext_lineitems[i][0] = scFileOCML.number;
    			scFileOCMQ.ext_lineitems[i][1] = scFileOCML.part_desc;
    			scFileOCMQ.ext_lineitems[i][2] = scFileOCML.part_no;
    			scFileOCMQ.ext_lineitems[i][3] = scFileOCML.target_completion;
    			scFileOCMQ.ext_lineitems[i][4] = scFileOCML.parent_quote; 
    			print (scFileOCMQ.ext_lineitems[i][0])
    			i++
    		}
    		while (scFileOCML.getNext() == RC_SUCCESS);
     
    		print ("arrayold : "+arrayold);
    		print ("tableau final : "+scFileOCMQ.ext_lineitems);
     
    		if (arrayold != scFileOCMQ.ext_lineitems) 
    		{
    			scFileOCMQ.doSave();
    			print ("SAVED");
    		}
    	}
    	else
    	{
    		print("Pas de ligne d'article reliée au devis.");
    	}
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    c'est une bizarrerie de js ...
    l'attribution en egalité de deux arraye se fait par reference et les arrays sont liés

    Essaye de passer par concat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array1=array1.concat(array2)

    [edit]
    mes premiers teste s'avèrent concluants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var one=new Array('a','b','c')
    var two=new Array()
     
    two=one
    one.push('d')
    alert (two)
     
    var three=new Array('a','b','c')
    var four=new Array()
    four=four.concat(three)
     
    three.push('d')
    alert(four)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Spacefrog, merci pour la réponse qui m'a mis sur la voie.
    J'ai finalement résolu en utilisant la fonction join qui convertit mon tableau en une chaine de caractère.
    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Une simple comparaison des toString eviterait d'avoir à faire un join

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] tri et comparaison dans un tableau
    Par camer12 dans le forum Excel
    Réponses: 1
    Dernier message: 08/03/2011, 14h42
  2. Répartition et comparaison d'un tableau de char
    Par waldomania dans le forum Débuter
    Réponses: 1
    Dernier message: 31/12/2009, 12h04
  3. [XL-2000] Optimisation de comparaison de (long) tableau
    Par kaahlrv dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/07/2009, 17h03
  4. [E-07] TP Comparaison de points (tableau)
    Par perchman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/01/2009, 11h22

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