JS基础(三)

230 阅读2分钟

JS最后一部分,数组变换

用一张图大概形容下

总共三个变换map,filter,reduce.依次讲解举例.

1. map n变n

let arr = [1,2,3,4,5,6]
arr.map(item => item*item)//得到[1,4.9.16.25.36]
  • 将代码转换成 ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四','周六']
let arr = [0,1,2,2,3,3,3,4,4,4,4,6]
let arr2 = arr.map((item)=>{
  let week =['周日', '周一', '周二', '周三', '周四', '周五', '周六']
  return week[item]
})
或者:
let arr2 = arr.map((item)=> {
return {
0: '周日', 1: '周一', 2: '周二', 3: '周三', 4: '周四', 5: '周五',6: '周六'
}[item]
})


2. filter n变少

let arr = [1,2,3,4,5,6]
arr.filter(item => item%2 ===0 ? true:false)//得到[2,4,6]
另外一种简便写法
arr.filter(item=>item%2 ===0)//得到[2,4,6]
  • 找出所有大于 60 分的成绩
let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let scores2 = scores.filter(item=> item - 60>0)
console.log(scores2)
或者
let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let scores2 = scores.filter(item=>item>60?)
console.log(scores2)

2. reduce n变1(合成)

let arr = [1,2,3,4,5,6]
arr.reduce((sum,item)=>{return sum+item},0)//得到21
  • 得到数组的平方
let arr = [1,2,3,4,5,6]
arr.reduce((result,item)=>{return result.concat(item*item)},[])//[1,4,9,16,25,36]
  • 得到数组中的偶数
let arr = [1,2,3,4,5,6]
reduce((result,item)=>{
if(item%2===1){
return result
}else{
return result.concat(item)
}
},[])//得到[2,4,6]
  • 算出所有奇数之和
let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let sum = scores.reduce((sum, n)=>{
  if(n%2===1){
        return sum+n
}else{
   return sum
}},0)
或者:
let sum = scores.reduce((sum, n)=>{
  return n%2===0 ? sum : sum+n},0)

一些面试题

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

基本JS的语法和一些基本的例子就这些,如果还不会,就重新学习吧