JS函数练习题
1、求一组数中的最大值和最小值,以及所在位置
function maxArr(arr) {
// 默认最大值和最小值都是第一个数
var max = arr[0]
var min = arr[0]
for (i = 0; i < arr.length; i++) {
if (max <= arr[i]) {
max = arr[i]
var maxNum = i
}
if (min >= arr[i]) {
min = arr[i]
var minNum = i
}
}
console.log('最大值为' + max, '最大值的下标为' + maxNum);
console.log('最小值为' + min, '最大值的下标为' + minNum);
}
maxArr([10, 23, 34, 53, 43, 32])
2、封装一个函数可以求任意个数的和
function getSum() {
sum = 0
// 相当于遍历数组 i=0是从第一个开始
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i]
}
return '它们的和为' + sum
}
var num = getSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,)
console.log(num);
3、求斐波那契数列Fibonacci中的第n个数是多少?
// 斐波那契数列特征:1 1 2 3 5 8 13 21...
function fibonacciNumber(n) {
// a是第一个数
var a = 1
// b是第二个数
var b = 1
// c是前两个数的和
var c
// 从第三个数开始循环
for (i = 3; i <= n; i++) {
// 第三个值等于前两个数相加
c = a + b
// 把b的值赋给a 循环后a还是相当于前两个数的第一个数
a = b
// 把c的值赋给b 循环后b还是相当于前两个数的第二个数
b = c
}
return '第'+n+'个数是'+c
}
var result = fibonacciNumber(8)
console.log(result);
4、要求将不为0的值存入一个新的数组,生成新的数组
function arr(oldArr) {
// 定义一个新数组来存储新的数据
var newArr = []
// 进行数组遍历
for (i = 0; i < oldArr.length; i++) {
// 当值不为0时传入新的数组
if (oldArr[i] != 0) {
// 新数组里面的个数,用length不断累加
newArr[newArr.length] = oldArr[i]
// newArr.push(newArr[i])
}
}
return newArr
}
var result = arr([5, 6, 89, 0, 11, 0, 12, 3, 0])
console.log(result);
5、翻转数组
function overturnArr(oldArr){
var newArr = []
// 让数组反过来遍历
for(i=oldArr.length-1;i>=0;i--){
newArr[newArr.length] = oldArr[i]
}
return newArr
}
var result=overturnArr([4, 5, 7, 9,11,23])
console.log(result);
6、冒泡排序
function bubbleSort(arr) {
var length = arr.length
// 外面是循环比较的轮数 如果数组有5个元素 则只需要比较4轮 i就是从0到3
for (var i = 0; i < length - 1; i++) {
// 里面是每次循环比较的次数 如果数组有5个元素 第一次比较4次 第二次比较3次 以此类推
for (var j = 0; j < length - 1 - i; j++) {
// 判断:如果前面的数大于后面的数 则交换两数的位置
if (arr[j] > arr[j + 1]) {
var temp = []
temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
console.log(arr);
}
var arr = bubbleSort([10, 123, 35, 46, 757, 43, 657, 343, 3234, 45, 4])
console.log(arr);