首先是遇到的几个题目
第一题
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。