如何拆分字符串数组并返回带有键/值对的单个对象

Posted

技术标签:

【中文标题】如何拆分字符串数组并返回带有键/值对的单个对象【英文标题】:How to split an array of strings & return a single object with key/value pairs 【发布时间】:2021-12-16 13:24:19 【问题描述】:

我有这个arraystrings

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

我想将其转换为 objectkey/value 对,如下所示:


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

我必须尝试使用​​map()split(),但我得到了这个输出:

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'  ]
// 

【问题讨论】:

您只需在退货中使用computed property 名称:return [key]: value; 这能回答你的问题吗? Dynamic object property names? 【参考方案1】:

map 覆盖数组,split 每一项通过': ',然后使用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)

【讨论】:

【参考方案2】:

@Spectric 的替代解决方案是使用reduce,将您的数组转换为对象。

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));

【讨论】:

以上是关于如何拆分字符串数组并返回带有键/值对的单个对象的主要内容,如果未能解决你的问题,请参考以下文章

Restkit 返回具有 0 个键值对的对象数组

如何用setData修改数组

如何将包含多个键值对的列拆分为pyspark中的不同列

ES6基础笔记(待续)

在事先不知道键值对的情况下迭代 v-for 中的数组

带有键值对的array_push()