简体   繁体   中英

How to split an array of strings & return a single object with key/value pairs

I have this array of strings :

[ 
  'Back to Main Window: Retour à la fenêtre principale',
  'All Client Groups: Tous les groupes de clients',
  'Filter by Client: Filtrer par client' 
]

I would like to transform it into an object with key/value pairs like so:

{
   'Back to Main Window': 'Retour à la fenêtre principale',
   'All Client Groups': 'Tous les groupes de clients',
   'Filter by Client': 'Filtrer par client' 
}

I have to tried to use map() & split() , but I get this output instead:

const results = translations.map(translation => {
  const [key, value] = translation.split(':');

  return { key: value };
});

// results returns an "array" with the "key" word as key for all values :(
// [ { key: ' Retour à la fenêtre principale' },
//   { key: ' Tous les groupes de clients' },
//   { key: ' Filtrer par client' } ]
// 

map over the array and split each item by ': ' , then use Object.fromEntries :

 const arr = [ 'Back to Main Window: Retour à la fenêtre principale', 'All Client Groups: Tous les groupes de clients', 'Filter by Client: Filtrer par client' ] const res = Object.fromEntries(arr.map(e => e.split(": "))) console.log(res)

An alternative solution to @Spectric would be to use reduce , to transform your array to an object.

 const arr = [ 'Back to Main Window: Retour à la fenêtre principale', 'All Client Groups: Tous les groupes de clients', 'Filter by Client: Filtrer par client' ]; function transform(arr) { return arr.reduce((obj, line) => { const [key, value] = line.split(': '); obj[key] = value; return obj; }, {}); } console.log(transform(arr));

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