const arr = [
{
code: 1,
name: '1',
need: true
},
{
code: 2,
name: '2'
},
{
code: 3,
name: '3',
need: true
},
{
code: 4,
name: '4'
},
]
当我们遇到arr这样的数据结构,需要过滤掉need不为true的属性,并且返回的对象中code和name分别改为value和label
这还不简单?
上filter和map
const list = arr.filter(n => n.need).map(n => ({
value: n.code,
label: n.name
}))
但是,这样不就循环了2次arr了嘛?
上reduce
const list1 = arr.reduce((finalList, n) => {
if (n.need)
finalList.push({
value: n.code,
label: n.name
})
return finalList
}, [])
这样就可以在一个循环中处理完数据结构了,还可以使用flatMap方法
const list2 = arr.flatMap(n => n.need ? {
value: n.code,
label: n.name
} : [])