Home > database >  Mapping through an array to produce an object
Mapping through an array to produce an object

Time:05-20

I have an array :

[
"2022-05-20",
"2022- 06-22",
"2022-06-20"
]

and I want to produce an object like this:

{
    '2022-05-20': {disabled:true},
    '2022-06-22': {disabled: true},
'2022-06-20': {disabled: true},
  }

I tried using a for loop but it kept producing errors. Is this possible with javascript?

CodePudding user response:

You can use Array#reduce as in the following demo. You can also use Array#map but you would have to use Object.fromEntries as well.

const input = [ "2022-05-20", "2022- 06-22", "2022-06-20" ],

      output = input.reduce(
          (prev,cur) => 
          ({...prev,[cur]:{disabled:true}}), {}
      );
      
      
console.log( output );

USING Array#map ...

Here is how you can use Array#map:

const input = [ "2022-05-20", "2022- 06-22", "2022-06-20" ],

      output = Object.fromEntries(
          input.map(date => [date, {disabled:true}])
      );
      
      
console.log( output );

CodePudding user response:

Can do it:

let dates = [
  "2022-05-20",
  "2022- 06-22",
  "2022-06-20"
];

let newObj = Object.assign(...dates.map(key => ({[key]: {disabled: true}})));

console.log(newObj)

CodePudding user response:

This might get the job done.

const yourArray = ["2022-05-20", "2022-06-22", "2022-06-20"];
const obj = {};
for(const x of yourArray) obj[String(x)] = { disabled: true };
console.log(obj); // :)

Create the variable obj that is going to save the produced object you want. Iterating throw your array and using a string parsed version of the value in the current iteration (parsing just in case, if you already know the array is made of strings, this is kinda unnecessary) to save it as a key on the new object, also assigning to that key, the value { disabled: true }.

CodePudding user response:

Here is a one liner solution:

let res = data.reduce((acc, curr) =>(acc[curr] = {disabled: true}, acc), {});
  • Related