2011-01-14 2 views
1

J'ai une chaînedécoupant une chaîne en javascript et le stockage dans le tableau multidimentionnelle

string s='2011/01/03 00:00:00,14.00|2011/01/03 00:00:00,14.50|2011/01/03 00:00:00",15.00|2011/01/02 00:00:00,12.00|'; 

Je veux diviser la chaîne d'abord par « | » , Que je peux le faire en utilisant

var ds=[]; 
ds=s.split('|'); 

je veux encore les diviser par « » et stocker dans un tableau

La question est de savoir comment puis-je stocker dans un tableau de multidimention de sorte que la sortie ressemble à ce

da[0]={'2011/01/03 00:00:00',14.00} 
da[1]={'2011/01/03 00:00:00',14.50} 
. 
. 
. 

Merci PRADY

+0

Si vous voulez vraiment un tableau multi-dimensionnel, voyez la réponse de @ patrickdw à quoi ressemble la syntaxe. Les accolades sont pour les littéraux d'objets (paires clé/valeur), pas pour les tableaux (valeurs ordonnées). – Phrogz

+0

merci Phrogz et patrick .. Je cherchais un tableau multidimentional, j'avais fait une erreur en utilisant le} au lieu de] – Prady

Répondre

2
var ds = s.split('|'); 

for(var i = 0, len = ds.length; i < len; i++) { 
    if(ds[i]) 
     ds[i] = ds[i].split(','); 
} 

Résultat ressemble:

[ 
    ['2011/01/03 00:00:00','14.00'], 
    ['2011/01/03 00:00:00','14.50'], 
    ['2011/01/03 00:00:00','15.00'], 
    ['2011/01/02 00:00:00','12.00'], 
    '' 
] 
+0

+1 pour mettre en cache la longueur du tableau, mais -1 pour une instruction multiligne sans accolades . : p – Phrogz

+0

@Phrogz: Je suis sorti. ; o) – user113716

2
var s='2011/01/03 00:00:00,14.00|2011/01/03 00:00:00,14.50|2011/01/03 00:00:00,15.00|2011/01/02 00:00:00,12.00'; 
var pieces = s.split('|'); 
for (var i=0,len=pieces.length;i<len;++i){ 
    var pair = pieces[i].split(','); 
    pieces[i] = {}; 
    pieces[i][pair[0]] = pair[1]*1; //*1 to convert from string to number 
} 

console.log(pieces); 
// [ 
// {'2011/01/03 00:00:00':14.00}, 
// {'2011/01/03 00:00:00':14.50}, 
// {'2011/01/03 00:00:00':15.00}, 
// {'2011/01/02 00:00:00':12.00}, 
// ] 

Cela suppose, en fonction de votre syntaxe pseudo-JS en utilisant des accolades, que vous avez vraiment voulu dire un tableau d'objets au lieu d'un tableau multidimensionnel. Si vous voulez un seul objet de hachage « temps comme chaîne » aux valeurs, vous pourriez faire:

var pieces = s.split('|'); 
var values = {}; 
for (var i=0,len=pieces.length;i<len;++i){ 
    var pair = pieces[i].split(','); 
    values[pair[0]] = pair[1]*1; 
} 
console.log(values); 
// { 
// '2011/01/03 00:00:00': 14.00, 
// '2011/01/03 00:00:00': 14.50, 
// '2011/01/03 00:00:00': 15.00, 
// '2011/01/02 00:00:00': 12.00, 
// } 

Cela vous permettra de trouver la valeur pour un jour donné en temps constant, sans traverser le tableau de valeurs .

+0

Je vois que vous avez choisi de l'interpréter comme des objets. Vous pouvez avoir raison. Je vais donner un +1 pour ça. : o) Oh, et pour la conversion du nombre aussi. Bonne prise. – user113716

+0

@patrickdw Je pense que je n'ai pas raison; cela n'a pas de sens d'avoir un tableau d'objets avec une seule clé chacun. Je vais modifier pour ajouter une autre supposition possible, mais je pense que vous aviez raison de choisir le tableau multidimensionnel demandé. – Phrogz