题目:
1 高一二班的期末成绩存储在数组a中 老师想知道是否所有人都达到及格标准了 及格标准为d
例如 a=【97, 32, 73, 60】 d = 20 结果:true
例如 a=【80, 30, 76, 83, 90, 5】 d = 95 结果:false
作答:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" id="ainput" placeholder="期末成绩数组a">
<input type="text" id="dinput" placeholder="及格线d">
<button id="btn">提交</button>
<script>
var fn1 = new Function("arr,d",`
for(var i = 0; i<arr.length;i++){
if(arr[i] < d){
return console.log(false);
}
return console.log(true);
}
`)
// var arr = [97,32,73,60]
// var arr1 = [80, 30, 76, 83, 90, 5]
// fn1(arr,20)
// fn1(arr1,95)
var aInpt = document.getElementById("ainput")
var dInpt = document.getElementById("dinput")
var btn = document.getElementById("btn")
btn.onclick = function(){
fn1(aInpt.value.split(','),parseInt(dInpt.value))
}
</script>
</body>
</html>
解析:
- 在第一个输入框内输入所检测的数组
- 在第二个输入框内输入规定的及格分数线
- 通过new Function 创建了一个函数实例(第一个参数执行的形参,第二个参数是执行的方法体)
- 方法体通过for循环,将数组中的每一个元素都有及格分数线d进行比较,如果arr[i] < d,则输出false,如果for循环结束后没有一个满足arr[i] < d,输出true
- 通过给按钮添加点击事件,获取到两个输入框中的value值.
- 因为获取到的value值是sring类型,将第一个输入框获取到的数据通过split(',')将字符串的每一个字母按照逗号分别分隔开,返回值是一个数组,例如:1,2,3,4,5 => [1,2,3,4,5]
- 将第二个输入框获取到的数据通过parseInt(value),将其从字符串转变成number类型,parseInt()会保留整数部分,例如123.1(string) =>123(number)
- 将获取到的数组和数字类型当作形参传入函数中,再调用方法就能够实现功能了。
运行结果展示:
第一组数据图
第二组数据图