一行代码巧用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]
的值。