在javascript中将数组转换为以前缀值作为键的对象的最佳方法
我有一个带有前缀值的数组在javascript中将数组转换为以前缀值作为键的对象的最佳方法,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个带有前缀值的数组 ["options_a", "options_b", "options_c", "capable_d", "capable_e_c" ] 我需要以对象格式输出,前缀作为键,分组分割字符串作为值 object output format needed { "options":["a","b","c&qu
["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功能的简化形式来实现它
谢谢。减少前缀值的数组。按下划线(
\uuu
)拆分项目,并使用destructuring获取键和值数组(按下划线拆分后,值可能有多个项目)。如果累加器(acc
)不包含密钥,请使用空数组创建一个。通过下划线连接后,将值推送到acc[key]
const arr=[“选项a”、“选项b”、“选项c”、“能干的”、“能干的”]
const result=arr.reduce((附件,项目)=>{
常量[键,…值]=项拆分(“”)
如果(!acc[key])acc[key]=[]
acc[key].push(value.join(“'))
返回acc;
}, {})
console.log(result)
减少前缀值的数组。按下划线(\uuu
)拆分项目,并使用destructuring获取键和值数组(按下划线拆分后,值可能有多个项目)。如果累加器(acc
)不包含密钥,请使用空数组创建一个。通过下划线连接后,将值推送到acc[key]
const arr=[“选项a”、“选项b”、“选项c”、“能干的”、“能干的”]
const result=arr.reduce((附件,项目)=>{
常量[键,…值]=项拆分(“”)
如果(!acc[key])acc[key]=[]
acc[key].push(value.join(“'))
返回acc;
}, {})
console.log(result)
这两个答案看起来都不错,但是如果数据变大,那么选择哪一个更好呢?对我来说,这似乎是第二个没有join的答案。这可能是第二个答案,因为在第一个答案中会对临时数组进行垃圾收集。你可以随时分析它,看看哪个更快。这两个答案看起来都不错,但如果数据变大,选择哪一个会更好,对我来说,这似乎是你没有加入的第二个答案。这可能是第二个,因为临时数组将在第一个答案中被垃圾收集。您可以随时分析它,并查看哪个更快。