JS巧用reduce将数组转成对象

23 阅读1分钟

一行代码巧用JS的reduce将数组转换成对象:

1709372462963.png

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]的值。