[英]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.