2016-03-29 10 views
-4

ich dieses Objekt konvertieren möchten:Javascript ändern Objekt angepasste Array

"age": [ 
    { 
    "Under 20": "14", 
    "Above 40": "1" 
    } 
] 

dazu:

$scope data = {rows:[ 
    {c: [ 
     {v: "Under 20"}, 
     {v: 14} 
    ]}, 
    {c: [ 
     {v: "Above 40"}, 
     {v: 1}, 
    ]} 
}] 

Ich habe versucht:

$.map(resp.age, (el, key) => { 
     arr.push({c: [{v: el}, {v: el}]}); 
}); 

Ich weiß, wie zu verwenden, $.map und arr.push aber ich kann nicht den Schlüssel Under 20 bekommen und den Elementwertnehmen.

Wie kann ich das erreichen?

+0

@smnbbrv Hallo. Das tut mir leid. Ich kopiere aus Inspect-Element. Ich aktualisiere meine Frage mit gültigem Objekt – ssuhat

+1

wie @smnbbrv angegeben, Ihr Zielobjekt ist nicht gültig: Sie können nicht zwei Felder von "c" innerhalb desselben Objekts haben. – jehna1

+1

Können Sie Ihren Code posten? was hast du probiert? –

Antwort

2

Dies sollte es tun:

function convert(arr) { 
    var ages = arr["age"][0]; 
    return { 
     'rows': Object.keys(ages).map(function(key) { 
      return {'c': [{'v': key}, {'v':parseInt(ages[key])}] }; 
     }) 
    } 
} 

// Usage: 
convert({ 
    "age": [{ 
     "Under 20": "14", 
     "Above 40": "1" 
    }] 
}); 

-Code über Ausgänge:

{"rows":[{"c":[{"v":"Under 20"},{"v":14}]},{"c":[{"v":"Above 40"},{"v":1}]}]} 
+1

Danke. Es funktioniert super. – ssuhat