1

I currently have an array of objects that looks like this:

[
    {
        "key":"CES0000000001",
        "25568.95655":"29923",
        "25568.96078":"31603"
    },
    {
        "key":"CES0000000001",
        "25568.96501":"34480",
        "25568.96924":"38347"
    }
]

I'm trying to figure out the best way to restructure this data to look like this:

[
    {
        "key":"CES0000000002",
        "values": [ [ 25568.95655 , 29923 ] , [ 25568.96078 , 31603 ] ]
    },

    {
        "key":"CES0000000002",
        "values": [ [ 25568.96501 , 34480 ] , [ 25568.96924 , 38347 ] ]
    }
]

Can anyone provide some advice for this and any good resources for restructuring javascript objects? I'm getting more into visualization using d3.js and data formatting is key.

3
  • 1
    Seems like all you need to do is loop over the array and create some now objects with a key and values property. What specifically are you stuck on? Commented Oct 28, 2014 at 23:09
  • And where is the second object getting its key from? It's not represented in the original data. Commented Oct 28, 2014 at 23:11
  • Corrected the typo with the second object key. I'm just not accustomed to working with arrays/objects and wasn't sure which methods I should be using here. iSchluff provided a straightforward example that gets the job done. Thanks! Commented Oct 28, 2014 at 23:58

2 Answers 2

6

my solution would be

    var arr= [
    {
        "key":"CES0000000001",
        "25568.95655":"29923",
        "25568.96078":"31603"
    },
    {
        "25568.96501":"34480",
        "25568.96924":"38347"
    }
];

var transformed= arr.map(function(obj){
    var result= {
        key: obj.key,
        values: []
    }

    for (var key in obj) {
      if (obj.hasOwnProperty(key) && key !== "key") {
          result.values.push([key, obj[key]]);
      }
    }
    return result;
});

console.log(transformed);
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for the clean answer.
2

This is an old post I see, but I want to share how you could do this with es6 object destructuring and restructuring. if you have an object...

const obj1 = {
    "key":"CES0000000001",
    "25568.95655":"29923",
    "25568.96078":"31603"
};

you could have:

const restructure = ({key, ...values}) => ({key, Object.entries(values)});
const obj2 = restructure(obj1);

or for the array you could restructure all of them with:

const b = arr.map(({key, ...values}) => ({key, Object.entries(values)}));

or if you are reusing the function...

const b = arr.map(restructure);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.