一行代码巧用JS的reduce将数组转换成对象:
const arr = [{label:'测试1',value:'test1'},{label:'测试2',value:'test2'}]
const obj = arr.reduce((val,item) => {return { ...val,[item.value]:item }},{})
看不懂?没关系,我来带你捋一遍
arr.reduce((val,item) =>:传入的两个参数中,val是上一次执行callbackFn的结果,在上面的代码示例中,会不断将[item.value]:item塞入到val中,item是当前元素的值。
{return { ...val,[item.value]:item }},{}):很简单,就是返回的结果。而最后的{}是指第一次调用reduce时初始化的值。在代码中的意思就是,不断地往初始值{},即空对象里逐个塞入[item.value]:item。
注意:如果不指定初始化的值,那么val即初始值将自动采用arr[0]的值。