簡體   English   中英

javascript ecma6將數組項轉換為鍵值對的對象

[英]javascript ecma6 convert array items into an object of key value pairs

我想將具有某些操作的數組轉換為鍵和值的對象。 這是我的嘗試:

const config = [ 'key1=value1', 'key2=value2' ];

const configObject = config.map(c => {
  var key = c.split('=')[0];
  var value = c.split('=')[1];
  return  {key:value}
})

console.log('configObject', configObject) // [ { key: 'value1' }, { key: 'value2' } ]

我想獲得一個具有鍵值的對象,而不是一個沒有任何舊式for循環的數組。 像這樣:

{ key: 'value1' , key: 'value2' }

使用功能reduce

 const config = [ 'key1=value1', 'key2=value2' ]; const configObject = config.reduce((a, c) => { var [key, value] = c.split('='); return { ...a, ...{[key]: value} }; }, {}); console.log(configObject); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

您應該改用.reduce

 const config = [ 'key1=value1', 'key2=value2' ]; var data = config.reduce( (acc, el) => { acc[el.split("=")[0]] = el.split("=")[1]; return acc; }, {} ); console.log(data); 

你快到了。 您要查找的慣用法是Object.assign(...array-of-objects)

 config = [ 'key1=value1', 'key2=value2' ]; configObject = Object.assign(...config.map(c => { var key = c.split('=')[0]; var value = c.split('=')[1]; return {[key]:value} })) console.log(configObject) 

另請注意,它是[key]:而不僅僅是key:

一個更簡潔但可讀性較低的選項:

configObject = Object.assign(...config
     .map(c => c.split('='))
     .map(([k, v]) => ({[k]: v})));

您可以將拆分的鍵/值對映射到新對象中,並使用Object.assign收集所有對象。

 var array = ['key1=value1', 'key2=value2'], object = Object.assign(...array.map(s => (([k, v]) => ({ [k]: v }))(s.split('=')))); console.log(object); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM