0
const field = ['name', 'address']

const data = field.map(item => {
  return {item: {mode: 'insensitive', sort: 'desc'}}
})

the variable data above is

[
 {
  item: {
   mode: 'insensitive', 
   sort: 'desc'
  },
  item: {
   mode: 'insensitive', 
   sort: 'desc'
  }
 }
]

I want the value to be

[
 {
  name: {
   mode: 'insensitive', 
   sort: 'desc'
  },
  address: {
   mode: 'insensitive', 
   sort: 'desc'
  }
 }
]

is that possible? or any method to do it better, thank's for your help

  • Does this answer your question? [How to use a variable for a key in a JavaScript object literal?](https://stackoverflow.com/questions/2274242/how-to-use-a-variable-for-a-key-in-a-javascript-object-literal) – Ruud Helderman Oct 16 '22 at 10:51

1 Answers1

1

You can achieve this by wrapping your item object around brackets []

const data = field.map(item => {
    return {[item]: {mode: 'insensitive', sort: 'desc'}}
})

Output:

[
  { name: { mode: 'insensitive', sort: 'desc' } },
  { address: { mode: 'insensitive', sort: 'desc' } }
]

You can alternatively also use arrow functions to make your code look cleaner, You can learn more about arrow functions here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

const field = ['name', 'address']
const data = field.map(item => ({[item]: {mode: 'insensitive', sort: 'desc'}}));
console.log(data)
SamHoque
  • 2,978
  • 2
  • 13
  • 43