比较得到最小的数
1 两个数比较方法
let minOf2 = numbers =>numbers[0]<numbers[1]?numbers[0]:numbers[1] //第一种
let minOf2 =(numbers)=>{ if(numbers[0]<numbers[1]){ return numbers[0] }else{ return numbers[1] }} //第二种 一般用第一种优化代码
let minOf2 = ([a,b]) =>a<b?a:b //这种写法叫做析构赋值,之后的课会反复使用 注意([a,b])这个小括号串括号都不能省
__调用
minOf([1,2]) //小白调用法
minOf.call(undefined,[1,2]) //这是高手调用法 我们之后都用这种调用法
minOf2 ==>它有一个现成APIJS内置了Math.min
Math.min(1,2) //1
Math.min.call(undefined,[1,2])
Math.min.apply(null,[1,2])
2 多个数比较方法
得到一个数的最小值
let min =(numbers ) =>{
if(numbers.length>2){return min([numbers[0],min(numbers.slice(1))]) //得到它的第一个 再比较其它
}else{
return Math.min.apply(null,numbers) //Math.min 找到两个数里面的最小值
}
}min([44,2,99,3]) //2
min.call(null,[44,2,99,3]) //看了其它同学的答题 发现这个方法也可以
同理 得到一个数的最大值 我们只需要调用 Math.max方法 代码如下:
let max=(numbers)=>{
if(numbers.length>2){return max([numbers[0],max(numbers.slice(1))])
}else{return Math.max.apply(null,numbers)
}
}
比较数组 从小到大排序
let min =(numbers ) =>{ if(numbers.length>2){ return min([numbers[0],min(numbers.slice(1))]) }else{ return Math.min.apply(null,numbers) }}
let minIndex = (numbers ) =>{
return numbers.indexOf(min(numbers)) //minIndex 找到最小的这个数字的下标
}let sort = (numbers) =>{
if(numbers.length>2){let index = minIndex(numbers)
let min = numbers[index]
numbers.splice(index,1)
return [min].concat(sort(numbers))
}else{return numbers[0]<numbers[1]?numbers:numbers.reverse()
}
}
同理 推论得到从大到小排序
let max =(numbers ) =>{
if(numbers.length>2){ return max([numbers[0],max(numbers.slice(1))]) }
else{ return Math.max.apply(null,numbers) }}
let maxIndex = (numbers ) =>{ return numbers.indexOf(max(numbers)) }
let sort = (numbers) =>{
if(numbers.length>2){
let index = maxIndex(numbers)
let max = numbers[index]
numbers.splice(index,1)
return [max].concat(sort(numbers)) }
else{ return numbers[0]>numbers[1]?numbers:numbers.reverse() } } //这个小于号一定要改成大于号

网友评论