2009-03-19 8 views
1

J'ai une fonction (que je ne peux pas changer) que les requêtes des données à partir d'une base de données et il retourne dans une variable qui montre que le format suivant si je l'afficher sous forme de texte:conversions tableau Javascript

var outputdata= 
    [ 
     { itemA: 'M0929', itemDate: new Date(1950,03-1,25,0,0,0,0), itemID: 'JDR12' }, 
     { itemA: 'X0121', itemDate: new Date(1983,07-1,07,8,0,0,0), itemID: 'RPN50' }, 
     { itemA: 'U0229', itemDate: new Date(1942,09-1,07,8,0,0,0), itemID: 'CRG98' }, 
    ]; 

J'ai besoin qu'il soit converti dans le format suivant (le formatage de date spécifique n'a pas d'importance) pour une utilisation par une autre fonction (que je ne peux pas non plus changer).

var inputdata=[ 
     [ 
      "M0929", 
      "1950-03-25", 
      "JDR12" 
     ], 
     [ 
      "X0121", 
      "1983-07-07", 
      "RPN50" 
     ], 
     [ 
      "U0229", 
      "1942-09-07", 
      "CRG98" 
     ] 
    ]; 

Quelqu'un pourrait-il offrir une aide ... Je ne comprends pas vraiment javascript tableaux et je suis vraiment après une fonction pour effectuer la conversion.

+0

Merci pour les réponses - je vais donner à certains d'entre eux un aller. Non, ce n'est pas un devoir ... juste besoin d'extraire des données d'un système en utilisant leur fonction de base de données et dans un contrôle dhtmlxGrid. –

Répondre

4

Vous allez probablement devoir écrire vous-même, par exemple:

function pad (what) 
{ 
    return what < 10 ? '0'+what : String(what); 
} 
function transformData (data) 
{ 
    var result = []; 
    for (var i=0;i<data.length;++i) 
    { 
     var date = data[i]['itemDate']; 
     result.push([ 
      data[i]['itemA'], 
      date.getFullYear()+'-'+pad(date.getMonth())+'-'+pad(date.getDate()), 
      data[i]['itemID'] 
     ]); 
    } 
    return result; 
} 

var outputdata= 
    [ 
     { itemA: 'M0929', itemDate: new Date(1950,03-1,25,0,0,0,0), itemID: 'JDR12' }, 
     { itemA: 'X0121', itemDate: new Date(1983,07-1,07,8,0,0,0), itemID: 'RPN50' }, 
     { itemA: 'U0229', itemDate: new Date(1942,09-1,07,8,0,0,0), itemID: 'CRG98' }, 
    ]; 

var result = transformData(outputdata); 

alert(result.join("\n")); 

Maintenant, les choses à connaître sont la nature des dates UTC. Plus de détails peuvent être trouvés ici http://www.w3schools.com/jsref/jsref_obj_date.asp. Aussi, je recommande fortement de lire plus sur Javascript en général.

+0

Il est préférable de ne pas répondre aux questions sur les devoirs, plutôt que de le faire pour eux. – MarkusQ

+0

Si une personne (pas nécessairement ce type) apprend quelque chose d'utile sur internet aujourd'hui, ce sera une bonne journée. – Jotham

1
function convert(outputdata){ 
    var arr = []; 
for(var i = 0; i<outputdata.length; i++){ 
    var output = outputdata[i]; 
    var temp = [output.itemA, output.itemDate, output.itemID]; 
    arr[i] = temp; 
} 
return arr; 
} 

Modifié: initialisés arr.

+0

Il est préférable de ne pas répondre aux questions sur les devoirs, plutôt que de le faire pour eux. – MarkusQ

+0

Son. Prendra soin de l'avenir. Pour ce poste ne peut pas faire beaucoup. Même si je le supprime, il y a des révisions disponibles. –

+0

Il y a une différence entre une question pour débutant et un devoir. Je pense que le PO n'est pas versé dans le javascript et/ou la programmation, mais cela ressemble à un problème de la vie réelle. –

0

Pas une réponse complète, parce que cela sent le devoir (et si c'est le cas, vous devriez le marquer comme tel). hints donc d'abord:

  • Vous pouvez faire un tableau en écrivant quelque chose comme `[7, 9 * 7, "ho"]
  • Vous pouvez obtenir à des propriétés avec la notation par points comme obj.itemA
+0

Milieu-homme = devoirs? Tout à fait l'hypothèse. Et le "prévenir les masses" commentaire répété est excessif, l'homme. –

+0

Cela ressemblait à des devoirs parce que 1) il est assez simple que quelqu'un qui peut programmer dans _any_ langue devrait être en mesure de le disséquer en moins de temps qu'il n'en faut pour poster ici, 2) avec arbitraire "proche" il ne peut pas changer 3) posté par un nouvel utilisateur et 4) ... vous avez l'idée – MarkusQ