生成页码
描述
请补全JavaScript代码,要求根据参数动态生成"li"标签页码并插入"ul"标签下。要求如下:
1. "allItem"为总数据项个数,"pageItem"为每页的数据项个数
2. "li"标签内容为当前页码数,页码从1开始
示例
输入:
_createPage(13,2)
输出:
"li"长度为7,"li"内容依次为"1","2","3","4","5","6","7"
作答
要求参数动态生成li标签在ul下 求出页码数,然后渲染数据即可。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<ul id="ul">
</ul>
<script type="text/javascript">
const _createPage = (allItem, pageItem) => {
// 补全代码
var ul =document.querySelector('#ul')
let index=Math.ceil((allItem/pageItem));
for(let i=1;i<=index;i++){
let li =document.createElement('li')
li.innerHTML=i;
ul.append(li)
}
}
</script>
</body>
</html>
2.总成绩排名
描述
请补全JavaScript代码,要求将数组参数中的对象以总成绩(包括属性"chinese"、"math"、"english")从高到低进行排序并返回。
作答
对对象中的属性进行遍历排序即可。需要注意的是排序是按从高到低进行。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
const _rank = array => {
// 补全代码
array.sort((gao,di)=>{
let g=gao.chinese+gao.math+gao.english;
let d=di.chinese+di.math+di.english;
return d-g;
})
return array;
}
</script>
</body>
</html>
3.子字符串频次
描述
请补全JavaScript代码,该函数接受两个参数分别为字符串、子字符串,要求返回子字符串在字符串中出现的频次。
作答
求子字符串在字符串出现的次数,需要调用split方法进行拆分。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _searchStrIndexOf = (str, target) => {
// 补全代码
let index= str.split(target).length-1;
return index
}
</script>
</body>
</html>
利用正则表达式进行查询
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _searchStrIndexOf = (str, target) => {
// 补全代码
let reg=new RegExp(target,'g');
return str.match(reg).length
}
</script>
</body>
</html>
利用indexOf方法查询
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _searchStrIndexOf = (str, target) => {
// 补全代码
let index =str.indexOf(target);
let sum=0;
while(index>0){
index=str.indexOf(target,index+1);
sum++
}
return sum
}
</script>
</body>
</html>
4.继承
描述
请补全JavaScript代码,实现以下功能:
1. 给"Human"构造函数的原型对象添加"getName"方法,返回当前实例"name"属性
2. 将"Chinese"构造函数继承于"Human"构造函数
3. 给"Chinese"构造函数的原型对象添加"getAge"方法,返回当前实例"age"属性
作答
对于类的继承和使用父类方法:
首先通过Human.prototype.getName给“Human”的原型添加“getName”函数
然后通过Chinese.prototype将“Chinese”的原型挂载在“Human”构造函数的实例上
修复“Chinese”的原型链
最后通过Chinese.prototype.getAge给“Chinese”的原型添加“getAge“函数
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
function Human(name) {
this.name = name
this.kingdom = 'animal'
this.color = ['yellow', 'white', 'brown', 'black']
}
function Chinese(name,age) {
Human.call(this,name)
this.age = age
this.color = 'yellow'
}
// 补全代码
Chinese.prototype=new Human();
Human.prototype.getName=function(){
return this.name
}
Chinese.prototype.getAge=function(){
return this.age
}
Chinese.prototype.constructor=Chinese;
</script>
</body>
</html>
5. 判断斐波那契数组
描述
请补全JavaScript代码,要求以Boolean的形式返回参数数组是否为斐波那契数列。在数学上,斐波那契数列以如下方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)
注意:
1. [0,1,1]为最短有效斐波那契数列
作答
1.要求满足斐波那契数列的数组,需要进行判断任意三个数之间满足即可。需要注意的是array的长度要大于3
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
const _isFibonacci = array => {
// 补全代码
var flag=true;
if(array.length<3)flag=false;
for(let i=2;i<array.length;i++){
if(array[i-1]+array[i-2]!=array[i]){
flag=false;
}
}
return flag;
}
</script>
</body>
</html>
6.数组扁平化
描述
请补全JavaScript代码,要求将数组参数中的多维数组扩展为一维数组并返回该数组。
注意:
1. 数组参数中仅包含数组类型和数字类型
示例:
输入:
[1,[2,[3,[4]]]]
输出:
[1,2,3,4]
作答
要求将多维数组扩展为一维数组,需要将数组的括号去除使用递归方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _flatten = arr => {
// 补全代码
let result = []
function flatten(arr) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr[i])
} else {
result.push(arr[i])
}
}
}
flatten(arr);
return result;
}
</script>
</body>
</html>
利用ES6新特性中flat方法进行扁平化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _flatten = arr => {
// 补全代码
return arr.flat(Infinity)
}
</script>
</body>
</html>
利用some方法进行对多维数组的展开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
const _flatten = arr => {
// 补全代
// some只要还有项是数组类型,就展开一层
while (arr.some((item) => Array.isArray(item))) {
arr=[].concat(...arr)
}
return arr
}
</script>
</body>
</html>