JS数组中的一些笔记

138 阅读2分钟

首先是遇到的几个题目

第一题

let arr = [0,1,2,2,3,3,3,4,4,4,4,6]
let arr2 = arr.map(补全代码)
console.log(arr2)

补全括号内代码, 使得console.log(arr2)打出结果为

console.log(arr2) // 结果为 ['周日', '周一', '周二', '周二', '周三', '周三', '周三', '周四', '周四', '周四', '周四','周六']

首先是我自己的解法,代码如下

let arr = [0,1,2,2,3,3,3,4,4,4,4,6]
let arr2 = arr.map(x => {
    if(x === 0){
       return x = '星期日'
}else if(x === 1){
    return x = '星期一'
}else if(x === 2){
    return x = '星期二'
}else if(x === 3){
    return x = '星期三'
}else if(x === 4){
    return x = '星期四'
}else{
    return x = '星期六'
}
    return x 
})
console.log(arr2)

虽说此代码能够实现,但是代码行数太长,不够美观看起来也不够专业,经过搜索引擎和咨询朋友,改成了比较美观的写法,代码如下

let arr = [0,1,2,2,3,3,3,4,4,4,4,6]
let arr2 = arr.map((item)=>{
  return ['周日','周一','周二','周三','周四','周五','周六'][item]
})
console.log(arr2)

第3行里的代码意思是,给一个从星期日到星期一的数组,利用arr中的item遍历此数组,arr的元素[0,1,2,3,4,6]对应此数组的下标。

如:

  • '周日'下标为0,所以arr2首个元素为'周日 '
  • '周一'下标为1,所以arr2的1元素均为'周一'
  • '周三'下标为3,所以arr2的3元素均为'周三'

第二题

let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let sum = scores.reduce((sum, n)=>{
  补全代码
},0)
console.log(sum)

补全代码,使得打印出结果为所有奇数的和

console.log(sum) // 奇数之和:598 

首先是我的解法,代码如下

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)
console.log(sum)

此代码问题依旧是行数较多,看起来不够美观,经过调整,代码如下

let scores = [95,91,59,55,42,82,72,85,67,66,55,91]
let sum = scores.reduce((sum, n)=>{
    return n%2 ===1 ? sum+n : sum
    },0)
console.log(sum)

第4行代码代码是scores数组中判断是否是奇数,是则返回sum+n的值,否则只返回sum,花括号后面逗号和右括号包住的0代表sum的初始值为0。