简体   繁体   中英

Convert javascript object to array of individual objects

I have the following object:

{English: 4, Math: 5, CompSci: 6}

How can I convert it to an array of objects, like:

[{English: 4}, {Math: 5}, {CompSci: 6}]

Can't find the answer anywhere. Thanks!!

Use Array#forEach over Object.keys(YOUR_OBJECT)

 var input = { English: 4, Math: 5, CompSci: 6 }; var op = []; Object.keys(input).forEach(function(key) { var obj = {}; obj[key] = input[key]; op.push(obj); //push newly created object in `op`array }); console.log(op); 

With newer JS, you could take Object.entries and map single properties.

 var object = { English: 4, Math: 5, CompSci: 6 }, array = Object.entries(object).map(([k, v]) => ({ [k]: v })); console.log(array); 

Just loop over each of the keys in the object.

 var oldObject = {English: 4, Math: 5, CompSci: 6}; var newArray = []; // Loop over each key in the object for (var key in oldObject) { // Create a temp object var temp = {}; // Set the key of temp temp[key] = oldObject[key] // Push it to the array newArray.push(temp); } console.log(newArray) 

you can directly assign object by {} but you must use [] quote for key value if not that will not worked

 var obj = {English: 4, Math: 5, CompSci: 6};
 var n_obj = [];
 for(var i in obj){
    n_obj.push({[i]:obj[i]});
 }
 console.log(n_obj);

You can turn the object into an array of key-value pairs using Object.entries and then map this array to smaller object created using Object.fromEntries from each individual key-value pair (the key part here is the wrapping in another array before passing to fromEntries ):

Object.entries(obj).map(e => Object.fromEntries([e]))

The reverse way is similar: We create a big object using Object.fromEntries , and we pass in an array of key-value pairs. This array is created by flat-mapping (ie eliminating on extra layer of arrays) the array of objects to an array of key-value pairs we get from calling Object.entries on each small object. The key here is the flat -mapping, without it we would get an array of arrays of key-value pairs because we added that extra layer in the other conversion to separate the properties.

Object.fromEntries(arr.flatMap(o => Object.entries(o)))

You can use JSON.stringify() , String.prototype.match() with RegExp /".*"\\:.*(?=,|})/ , String.prototype.split() with RegExp /,/ , Array.prototype.join() with parameter "},{" , JSON.parse()

 var obj = {English: 4, Math: 5, CompSci: 6}; var res = JSON.parse("[{" + JSON.stringify(obj) .match(/".*"\\:.*(?=,|})/g)[0] .split(/,/) .join("},{") + "}]"); console.log(res); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM