11
var json = [{one: "text1", two: "text2", three: 3, four: 4},
            {one: "text3", two: "text4", three: 5, four: 6},
            {one: "text5", two: "text7", three: 8, four: 9}]

How can I convert the array of objects above into an array of arrays below?

var array = [["text1", "text2", 3, 4], 
             ["text3", "text4", 5, 6], 
             ["text5", "text7", 8, 9]]

Is there an ES2015 function to help convert it easily? If not a for loop might do.

1
  • 2
    What you have is an array of objects, not JSON. Commented May 2, 2018 at 20:56

4 Answers 4

19

You can use map and Object.values

let array = json.map(obj => Object.values(obj));
Sign up to request clarification or add additional context in comments.

1 Comment

Object.values is not ES6 though.
7

You could use Object.values directly as callback, which is available with ES 2017

var array = [{ one: "text1", two: "text2", three: 3, four: 4 }, { one: "text3", two: "text4", three: 5, four: 6 }, { one: "text5", two: "text7", three: 8, four: 9 }],
    result = array.map(Object.values);
                
console.log(result);

A classical approach

var array = [{ one: "text1", two: "text2", three: 3, four: 4 }, { one: "text3", two: "text4", three: 5, four: 6 }, { one: "text5", two: "text7", three: 8, four: 9 }],
    result = array.map(o => Object.keys(o).map(k => o[k]));
                
console.log(result);

2 Comments

Same here: Object.values is not ES6. Probably fine to use, but since the OP only mentions ES2015, worth to point out at least.
Object.values is even more pretty worked for me! Thanks
5

In case you need to explicitly specify order, you can destructure and map each item:

var array = json.map(({ one, two, three, four }) => ([one, two, three, four]))

This would also work for unordered keys in your original object, e.g.:

var json = [{ two: "text2", one: "text1", three: 3, four: 4 },
            { one: "text3", three: 5, two: "text4", four: 6 },
            { four: 9, two: "text7", three: 8, one: "text5" }]

Comments

0

You can also use this code snippet -

function convertObjCollToArrColl(json) {
    for (var i = 0, array = []; i < json.length; i++) {
        var el = json[i];
        array.push([el.one, el.two, el.three, el.four]);
    }
    
    return array;
}

convertObjCollToArrColl(json);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.