JavaScript-循环数组 案例与练习
Posted 速速逃离月球表面
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript-循环数组 案例与练习相关的知识,希望对你有一定的参考价值。
for循环案例
- 一行中打印5个小星星(采用字符串追加的方式)
<script>
var str = ''
for (var i=1;i<=5;i++) {
str = str + '★'
}
console.log(str)
</script>
控制台打印输出:
双重for循环:可以把里面的循环看作是外层循环的语句;外循环一次,里面的循环执行全部
- 打印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
- 打印倒三角
核心思想:里层循环 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>
- 打印九九乘法表
核心思想:每一行 公式的个数正好和行数一致,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>
- 求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>
- 有一分数序列: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后的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>
- 输出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循环案例
- 接收用户输入的用户名和密码,若用户名为 “admin” ,密码为 “123456” ,则提示用户登录成功! 否则,让用户一直输入。
<script>
var name = prompt('请输入用户名')
var pwd = prompt('请输入密码')
while(name!=='admin' && pwd!=='123456') {
name = prompt('请输入用户名');
pwd = prompt('请输入密码');
}
alert('登陆成功')
</script>
- 求整数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>
数组
- 求数组 [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>
- 求数组[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>
- 将下列数组倒置
<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>
- 数组转换为分隔字符串
要求:将数组 [‘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>
- 删除指定数组元素
要求:将数组[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>
- 翻转数组(数组倒置)
要求: 将数组 [‘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>
二维数组
- 让一个二维数组的每行元素都是降序排列
<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-循环数组 案例与练习的主要内容,如果未能解决你的问题,请参考以下文章