map
**map,n变成n。**
let arr = [1,2,3,4,5,6]
arr.map(item => item*item)
得出[1,4,9,16,25,36]
filter,n减少,过滤,减少
arr.filter(item => item%2 === 0 ? true : false)
可以简写为
arr.filter(item => item % 2 === 0)
得出[2,4,6]
reduce,n变1
let arr = [1,2,3,4,5,6]
arr.reduce((sum,item)=>{return sum+item},0)
得出结果21
reduce可以做map的功能
let arr = [1,2,3,4,5,6]
arr.reduce((result,item)=>{return result.concat(item*item)},[])
得出[1,4,9,16,25,36]
reduce 可以做filter的功能
arr.reduce((result,item)=>{ //result是个框,item是个数。
if(item % 2 ===1){//判断数是否为奇数
return result //直接返回框
}else{ //否则将数值放在框里返回
return result.concat(item)}
},[])
(得出) [2, 4, 6]
**简写版if else可以改成 "? :"表达式**
arr.reduce((result,item)=> //result是个框,item是个数。
item % 2 ===1 ?//判断数是否为奇数
result //直接返回框
: //否则将数值放在框里返回
return result.concat(item)
,[])
(得出) [2, 4, 6]
**进一步简化**
arr.reduce((result,item)=>
result.contact(item % 2 ===1 ? [] : item),[])
:
return result.concat(item)
,[])
arr.reduce((result,item)=>
result.concat(item % 2 === 1 ? [] :item),[])
题目
答案解析:
题目代码
let arr = [
{名称:'动物', id:1, parent:null},
{名称:'狗', id:2, parent:1},
{名称:'猫', id:3, parent:1},
]
答案代码
arr.reduce((result,item) => {
if (item.parent === null){
result.id = item.id
result['名称'] = item ['名称']
}else{
result.children.push(item)
delete item.parent
item.children = null
}
return result
},{id: null,children:[]})