10
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

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.