JS 交换

109 阅读1分钟

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),[])

题目

image.png 答案解析: 题目代码

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:[]})

image.png