how to make object's array from several array

Viewed 64

For example,

I have a total of two arrangements.

The key array has keys.

The remaining arrays are multi arrays in one array like [[A], [B], [C], ...]

So how do we put objects in one array?

let key = [“name”, “age”, “country”];

let values = [["james", "23", "US"],["steve", "20", "UK"], ...]


** expect result **
result = [
    {
        "name": "james",
        "age": 23,
        "country": "US"
    },
    {
        "name": "steve",
        "age": 20,
        "country": "UK"
    },
    ...
]


4 Answers

if you have data as name age and country with same keys so you can try below code it should work for you.

let values = [["james", "23", "US"],["steve", "20", "UK"], ...]
const result = [];

values.forEach(item => {
    const [name, age, country] = item;
    result.push({ name, age, country });
});

console.log(result)

Single line using array map and reduce functions:

values.map(v=>(key.reduce((acc, k, i) => ({...acc, [k]: v[i]}), {})));

(Note your original question contains non-ASCII quotation marks “” - you need to use " for valid JS syntax).

I just asked your question to OpenAI JavaScript Codex and it returned this result.

/* let key = [“name”, “age”, “country”]; */
var key = ["name", "age", "country"];
/* let values = [["james", "23", "US"],["steve", "20", "UK"]] */
var values = [["james", "23", "US"],["steve", "20", "UK"]];
/* So how do we put objects in one array? */
var objects = [];
for (var i = 0; i < values.length; i++) {
  var object = {};
  for (var j = 0; j < key.length; j++) {
    object[key[j]] = values[i][j];
  }
  objects.push(object);
}

I really don't know if it works or not, but I am curious to see what it does. You should try this.

Please forgive me if it doesn't work. Thanks

const objs = values.map(
 (valSet) => 
  Object.fromEntries(
   valSet.map(
    (val,i) => [val,keys[i]]
   )
  )
);

make entry arrays and then use this

Related