JavaScript的数组练习1. 读取学⽣的10门课的成绩, 然后输出10门课成绩的最⾼分, 最低分, 总分, 平均分.
提⽰:把10门课的成绩保存如⼀个数组中.
2. 创建100个随机的10到60的随机整数, 然后分别统计每个数字出现的次数
3. 定义⼀个函数, 判断数组中是否所有的数字都⼤于0
提⽰: 传⼊⼀个数组, 返回布尔值
4. 封装函数: 把两个数组共同的元素放⼊⼀个新的数组, 并返回新的数组
提⽰: 传⼊两个数组, 返回值为新的数组
5. 定义⼀个函数: 可以把数组中的下标为 3 的元素移到数组的开头.
提⽰: 传⼊⼀个数组
6. 有⼀个从⼤到⼩排好序的数组{99,85,82,63,60}。
现从页⾯输⼊⼀个数,要求按原来的规律将它插⼊数组中。
假设你输⼊的80,则应该插⼊到82和63之间。
7. ⼀个数字中有20个元素,对前10个元素使⽤升序,后10个元素使⽤降序。
元素都是整数。
1.
<title></title>
</head>
<!--题⽬:读取学⽣的10门课的成绩, 然后输出10门课成绩的最⾼分, 最低分, 总分, 平均分.
提⽰:把10门课的成绩保存如⼀个数组中.-->
<body>
<script>
var sum = 0;
var ave = 0;
var arr = [90, 100, 10, 20, 30, 40, 50, 60, 70, 80];
console.log(arr);
//排序
arr.sort(function (a, b) {
return a - b;
});
//最⾼分
function large(arr) {
return arr[arr.length - 1];
};
/
/最低分
function small(arr) {
return arr[0];
};
//总分
function total(arr) {
for (var ele of arr) {
sum += ele;
}
return sum;
};
/
/平均分
function ave(arr) {
return sum / arr.length;
}
//输出
console.log("总分: " + total(arr));
console.log("最⾼分: " + large(arr));
console.log("最低分: " + small(arr));
console.log("平均分: " + ave(arr));
</script>
</body>
</html>
<!--记得再次⽤原型替换3进⾏调试-->
⽤函数封装起来:(更具⾯向对象的思想)
<title>Title</title>
</head>
<body>
<script>
function Student(){
this.scores = [];
this.init = function (){
for (var i = 0; i < 3; i++){
var score = +prompt("请输⼊学⽣的成绩:");            this.scores.push(score);
}
};
this.max = function (){
var scores = this.scores;
var m = scores[0];// ["100", "200", "40"]
for(var i = 1; i < scores.length; i++){
if(m < scores[i]){
m = scores[i];
}
}
return m;
}
this.min = function (){
var scores = this.scores;
var m = scores[0];// ["100", "200", "40"]
for(var i = 1; i < scores.length; i++){
if(m > scores[i]){
m = scores[i];
}
}javascript全局数组
return m;
}
this.sum = function (){
var s = 0;
for(var e of this.scores){
s += e;
}
return s;
}
this.avg = function (){
return this.sum() / this.scores.length;
}
}
var s1 = new Student();
s1.init(); //初始化学⽣的成绩
console.log(s1.max());
</script>
</body>
</html>
2.
<title>Title</title>
</head>
<!--创建100个随机的10到60的随机整数, 然后分别统计每个数字出现的次数-->
<script>
//arr是放随机数产⽣的数字,newArr是放重复元素和重复个数的⼆维数组
var arr = [];
var newArr = [];
//js的数组可以动态增加,使⽤数组字⾯量创建
for (var i = 0; i < 100; i++) {
//⽤random判断随机数其实不是perfect(正态分布)
arr[i] = parseInt(Math.random() * 50 + 10);
}
console.log("随机数(正态分布):\n" + arr);
//对数组进⾏排序
arr.sort(function (a, b) {
return a - b;  //升序
});
console.log("随机升序排序:\n" + arr);
//判断数组元素的重复个数,这样算法是相对⽽⾔⽐较⾼效的,省掉了低效的代码率
for (var i = 0; i < arr.length;) {
var count = 0;
for (var j = i; j < arr.length; j++) {
if (arr[i] == arr[j]) {
count++;
} else {
break;
}
}
newArr.push([arr[i], count]);
i += count;
}
//输出⼆维数组
for (var i = 0; i < newArr.length; i++) {
console.log(newArr[i][0] + "重复次数:" + newArr[i][1]);
}
</script>
<body>
</body>
</html>
在这顺便讲解⼀下随机数⽣成的⽅法,以后只要涉及到随机数,就套路进去就⾏,就跟数学公式⼀样。(证明略)如何使⽤js⽣成n到m间的随机数字,主要⽬的是为后期的js⽣成验证码做准备。
⽅法1:Math.random() 函数返回0和1之间的伪随机数,可能为0,但总是⼩于1,[0,1)
⽣成n-m,包含n但不包含m的整数:
Step1:算出 m-n的值,假设等于w
Step2:Math.random()*w
Step3:Math.random()*w+n
Step4:parseInt(Math.random()*w+n, 10)  在这⾥10表⽰10进制,默认就是10进制。
⽅法2:⽣成n-m,不包含n但包含m的整数:
Step1:算出 m-n的值,假设等于w
Step2:Math.random()*w
Step3:Math.random()*w+n
Step4:Math.floor(Math.random()*w+n) + 1
注:Math.floor() 返回⼩于等于数字参数的最⼤整数,对数字进⾏下舍⼊⼀般记住这两种⽅法就⾏了。
另解:(在那⾥要不要加1,看⾃⼰的情况,掌握怎么算的):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//  [0, 1)  [0, 51)  [10, 61)  [10, 60]
// m = 10 n= 60
function randomInt(m, n){  //区间: [m, n]
return parseInt(Math.random() * (n - m + 1) + m);
}
/*创建⼀个长度是 count, 元素的值的范围是 [m, n]的数组*/
function createArray(count, m, n){
var arr = [];
for (var i = 0; i < count; i++){
arr.push(randomInt(m, n));
}
return arr;
}
function tongji(){
var obj = {};
var arr = createArray(400, 10, 19);
for (var num = 10; num <= 19; num++){
var c = 0;
for (var e of arr){
if (e == num){
c++;
}
}
obj[num + ""] = c;
}
return obj;
}
var result = tongji();
console.log(10 + "的个数:" + result["10"]);
console.log(result["11"]);
console.log(result);
</script>
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。