[英]best way to convert array to object with prefix value as key in javascript
我有一個帶有前綴值的數組
["options_a",
"options_b",
"options_c",
"capable_d",
"capable_e_c"
]
我需要輸出為對象格式,前綴為鍵,分組拆分字符串為值
object output format needed
{
"options":["a","b","c"],
"capable":["d","e_c"]
}
它可以用普通的 for 循環來完成,但是有沒有更好的方法來使用 es6 功能以簡化形式實現它。
謝謝你。
減少前綴值的數組。 用下划線( _
)分割項,並使用解構得到鍵和值的數組(值用下划線分割后可能有多個項)。 如果累加器 ( acc
) 不包含鍵,則使用空數組創建一個。 下划線加入后將值推送到acc[key]
。
const arr = ["options_a","options_b","options_c","capable_d","capable_e_c"] const result = arr.reduce((acc, item) => { const [key, ...value] = item.split('_') if(!acc[key]) acc[key] = [] acc[key].push(value.join('_')) return acc; }, {}) console.log(result)
您可以通過使用 RegExp 僅按第一個下划線拆分來避免加入(請參閱此答案):
const arr = ["options_a","options_b","options_c","capable_d","capable_e_c"] const result = arr.reduce((acc, item) => { const [key, value] = item.split(/_(.+)/) if(!acc[key]) acc[key] = [] acc[key].push(value) return acc; }, {}) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.