2016-03-30 4 views
0

Ich habe ein Javascript-Objekt wie folgt:Der beste Weg, um json csv in json-Objekt in Javascript zu verwandeln?

[{name:'bla', ts:['a','b','c'], ms: ['d','e','f']}] 

Ohne eine Reihe von temporären Objekten, was die effizienteste Art, wie ich über das Drehen es in ein Objekt gehen könnte wie folgt:

[{name:'bla',ts:'a',ms:'d'}, 
{name:'bla',ts:'b',ms:'e'}, 
{name:'bla',ts:'c',ms:'f'}] 

I bin offen für etwas wie lodash oder Unterstrich, um dies zu erreichen.

+0

Wie 'Name, ts und verwandte ms'? Immer 1 'Name'? Sind "ts" und "ms" ähnlich? – Wainage

+0

ja, jeder eindeutige Name wird einen Datensatz haben. ts und ms werden gleich groß sein. – user6135815

+0

check this out, es ist nicht genau das gleiche, aber der Kerl analysiert CSV-Strings in Objekte mit lodash ... nahe genug für einen Start: http://jsfiddle.net/sscovil/7sza8shs/ – JordanHendrix

Antwort

0

Es ist hässlich, aber funktioniert (und ist einfach 'Extra' Felder hinzufügen)

var a = [{name:'bla', ts:['a','b','c'], ms: ['d','e','f']}] 

var result = []; 
a.forEach(function(obj){ 
    obj.ts.forEach(function(item, index) { 
     result.push({ 
      name: obj.name, 
      ts: item, 
      ms: obj.ms[index] 
     }) 
    }) 
}) 

console.log(result) 
+0

Danke. Sieht genau so aus, wie ich es brauche. – user6135815

0

var arr = [{ 
 
    name: 'bla', 
 
    ts: ['a', 'b', 'c'], 
 
    ms: ['d', 'e', 'f'] 
 
}]; 
 

 
function parseArray(arr) { 
 
    var result = []; 
 
    arr.forEach(function(obj) { 
 
    for (var i = 0; i < obj.ts.length; i++) { 
 
     result.push({ 
 
     name: obj.name, 
 
     ts: obj.ts[i], 
 
     ms: obj.ms[i] 
 
     }); 
 
    } 
 
    }); 
 
    return result; 
 
} 
 

 
console.log(parseArray(arr));