写一个 min 函数,要求 min(numbers) 能返回数组 numbers 中的最小数字
let min=(numbers)=>{
if(numbers.length>2){
return min([numbers[0],min(numbers.slice(1))])
}else{
return Math.min.apply(null,numbers)}
}
写出一个 sort 函数,要求 sort(numbers) 能返回一个把 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) => numbers.indexOf(min(numbers))//找到数组中最小值的下标
let sort = (numbers) => {
if(numbers.length > 2){
let index = minIndex(numbers)
let min = numbers[index]//最小值赋给min
numbers.splice(index, 1)//删除最小值,留下剩下的参数
return [min].concat(sort(numbers))
}else{
return numbers[0]>numbers[1]? numbers.reverse(): numbers
}
}
数组中的slice,apply,splice
- arr1.slice(1)//从第二个元素开始截取,可以获取一个新的数组
- arr.splice(index,1)//删除index的一个元素
- arr.splice(index,1,'x')//并在删除的位置添加'x'
- arr.splice(index,1,'x','y')//并在删除的位置添加'x','y'
- arr.splice(index,0,'x')//在index处插入'x'
- arr.splice(index,0,'x','y')
- call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。apply 方法developer.mozilla.org/zh-CN/docs/…