问题
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:
You can use map
and Object.values
let array = json.map(obj => Object.values(obj));
回答2:
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" }]
回答3:
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);
来源:https://stackoverflow.com/questions/50143390/convert-array-of-objects-to-array-of-arrays