JavaScript-循环数组 案例与练习

Posted 速速逃离月球表面

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript-循环数组 案例与练习相关的知识,希望对你有一定的参考价值。

for循环案例

  1. 一行中打印5个小星星(采用字符串追加的方式)
<script>
var str = ''
for (var i=1;i<=5;i++) {
	str = str + '★'
}
console.log(str)
</script>

控制台打印输出:
在这里插入图片描述
双重for循环:可以把里面的循环看作是外层循环的语句;外循环一次,里面的循环执行全部

  1. 打印n行n列小星星
<script>
var rows = prompt('请您输入行数:')
var cols = prompt('请您输入列数:')
var str =''
for (var i=1;i<=rows;i++) {
	for (var j=1;j<=cols;j++) {
		str = str+'★'
	}
	str +='\\n'
}
console.log(str)
</script>

输入7和6
在这里插入图片描述

  1. 打印倒三角
    核心思想:里层循环 j=i;i<=10;j++
<script>
var str = ''
for (var i=1;i<=10;i++) {
	for (var j=i;j<=10;j++) {
		str = str + '★'
	}
	str += '\\n'
}
console.log(str)
</script>

在这里插入图片描述

  1. 打印九九乘法表
    核心思想:每一行 公式的个数正好和行数一致,j<=i
<script>
var str = ''
for (var i=1;i<=9;i++) {
	for (var j=1;j<=i;j++) {
		str = str + i + 'x' + j + '=' +i*j + '\\t'
	}
	str +='\\n'
}
console.log(str)
</script>

在这里插入图片描述

  1. 求S=1+2+3+…+n之和,S<1000的最大n的值
<script>
var s1 = 0
var n = 0
var s = 0
for (var i=1;s<1000;i++) {
    s1=s1+i
    if(s1<1000) {
        s = s1
        n = i
    } else {
        break
    }
}
console.log('S=1+2+3+...+n的和为'+s)
console.log('S<1000的最大n的值为'+n)
//简化后:
var s = 0
var n = 0
while(s<1000) {
    n++
    s = s+n
}
s = s-n
n = n-1
console.log('S=1+2+3+...+n的和为'+s)
console.log('S<1000的最大n的值为'+n)
</script>

在这里插入图片描述

  1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
<script>
var fm = 1
var fz = 2
var sum = 0
for (var i=1;i<=20;i++) {
    sum = sum + fz/fm
    var temp = fm
    fm = fz
    fz = fz + temp
}
console.log('这个数列的前20项之和是'+sum)
</script>

在这里插入图片描述

  1. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
    核心思想:第一天桃子数是第二天桃子数+1后的2倍
<script>
var d1 = 0
var d2 = 1
for (var i=9;i>0;i--) {
    d1 = (d2+1)*2
    d2 = d1
}
console.log('第一天共摘了'+d1+'个桃子')
</script>

在这里插入图片描述

  1. 输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,这个数就称为完数。
<script>
for (var i=1;i<1000;i++) {
    var sum =0
    for (var j=1;j<i;j++) {
        if(i%j==0) {
            sum = sum+j
        }       
    }
    if(sum==i) {
        console.log(i+'是完数')
    }
}
</script>

在这里插入图片描述

while循环案例

  1. 接收用户输入的用户名和密码,若用户名为 “admin” ,密码为 “123456” ,则提示用户登录成功! 否则,让用户一直输入。
<script>
var name = prompt('请输入用户名')
var pwd = prompt('请输入密码')
while(name!=='admin' && pwd!=='123456') {
	name = prompt('请输入用户名');
	pwd = prompt('请输入密码');
}
alert('登陆成功')
</script>
  1. 求整数1~100的累加值,但要求跳过所有个位为3的数【用continue实现】
<script>
var sum = 0
for (var i=1;i<=100;i++) {
	if(i%10!=3&&i!=3) {
		sum = sum + i
	}else {
		continue
	}
}
console.log(sum)
</script>

数组

  1. 求数组 [2,6,1,7, 4] 里面所有元素的和以及平均值。
<script>
var sum = 0
var arr = [2,6,1,7,4]
for (var i=0;i<arr.length;i++) {
	sum = sum+arr[i]
}
var average = sum / arr.length
console.log('该数组的和是'+sum)
console.log('该数组的平均值是'+average)
</script>

在这里插入图片描述

  1. 求数组[2,6,1,77,52,25,7]中的最大值。
<script>
var b = 0
var arr = [2,6,1,77,52,25,7]
var max = arr[0]
for (var i=1;i<=arr.length;i++) {
	b = arr[i]
	if (max<=b) {
		max = b
	}else {
		continue
}
console.log('该数组中最大值是'+max)
//优化代码:
var arrNum = [2, 6, 1, 77, 52, 25, 7];
var maxNum = arrNum[0]; // 用来保存最大元素,默认最大值是数组中的第一个元素
// 从0 开始循环数组里的每个元素
for (var i = 0; i < arrNum.length; i++) {
// 如果数组里当前循环的元素大于 maxNum,则保存这个元素和下标
	if (arrNum[i] > maxNum) {
		maxNum = arrNum[i]; // 保存数值到变量 maxNum
	}
}
console.log('该数组中最大值是'+maxNum)
</script>

在这里插入图片描述

  1. 将下列数组倒置
<script>
var arr = [23, 78, 12, 45, 89, 90]
	// A.借助中间数组
	var newArr = []
	for (var i = 0; i < arr.length; i++) {
		newArr[i] = arr[arr.length - i - 1]
	}
	console.log(newArr)

	//B.通过下标控制
	for (var i = 0; i < arr.length / 2; i++) {
		var temp = arr[arr.length - 1 - i]
		arr[arr.length - 1 - i] = arr[i]
		arr[i] = temp
	}
	console.log(arr)

	// C.通过下表控制(二)
	var i = 0
	var j = arr.length - 1
	while (i < j) {
		var temp = arr[i]
		arr[i] = arr[j]
		arr[j] = temp
		i++
		j--
	}
	console.log(arr)   
</script>            

在这里插入图片描述

  1. 数组转换为分隔字符串
    要求:将数组 [‘red’, ‘green’, ‘blue’, ‘pink’] 转换为字符串,并且用 | 或其他符号分割
    输出: ‘red|green|blue|pink’
<script>
var arr = ['red', 'green', 'blue', 'pink']
var str = ''
for (var i=0;i<arr.length;i++) {
	str = str + arr[i] +'|'
}
console.log(str)
</script>
  1. 删除指定数组元素
    要求:将数组[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中的 0 去掉后,形成一个不包含 0 的新数组。
<script>
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
var newArr = []
// var j = 0   或者不需要中间变量j,直接用newArr.length
for (var i=0;i<arr.length;i++) {
	if (arr[i]!=0) {
		// newArr[j] = arr[i];
		// j++
		newArr[newArr.length] = arr[i]
	}
}
console.log(newArr)
</script>

在这里插入图片描述

  1. 翻转数组(数组倒置)
    要求: 将数组 [‘red’, ‘green’, ‘blue’, ‘pink’, ‘purple’] 的内容反过来存放。
    输出: [‘purple’, ‘pink’, ‘blue’, ‘green’, ‘red’]
<script>
var arr = ['red', 'green', 'blue', 'pink', 'purple']
var newArr = []
for (var i=0;i<arr.length;i++) {
	newArr[arr.length-1-i] = arr[i]
	// 或者:
	// newArr[i] = arr[arr.length-1-i]
}
console.log(newArr)
</script>

在这里插入图片描述

二维数组

  1. 让一个二维数组的每行元素都是降序排列
<script>
//选择法
 var arr = [
		[54, 76, 32, 79],
		[76, 87, 23, 67]
	]
	for (var i = 0; i < arr.length; i++) {
		for (var j = 0; j < arr[i].length; j++) {
			var max = arr[i][j]
			var n = j
			for (var k = j + 1; k < arr[i].length; k++) {
				if (max < arr[i][k]) {
					max = arr[i][k]
					n = k
				}
			}
			if (n != k) {
				var t = arr[i][j]
				arr[i][j] = arr[i][n]
				arr[i][n] = t
			}
		}
	}
	console.log('降序排列后的数组为')
	console.log(arr)
</script>

在这里插入图片描述

以上是关于JavaScript-循环数组 案例与练习的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 操作元素案例练习

javascript循环和数组的基础练习

JavaScript函数案例3个练习

JavaScript的数组知识案例之随机点名器

JavaScript 代码片段

递归地展平数组(不循环)javascript