JavaScript基础题41~50

阅读: 评论:0

JavaScript基础题41~50

JavaScript基础题41~50

 JavaScript 1~10:JavaScript基础题1~10_100000!末尾的0的个数_不学无术BruceYoung的博客-CSDN博客
JavaScript 11~20:JavaScript基础题11~20_不学无术BruceYoung的博客-CSDN博客
JavaScript 21~30:
JavaScript基础题21-30_不学无术BruceYoung的博客-CSDN博客
JavaScript 31~40:
JavaScript基础题31-40_声明一个类a,包含类属性a,返回值为a的实例。 例如: console.log(a.a instan_不学无术BruceYoung的博客-CSDN博客
JavaScript 41~50:
JavaScript基础题41~50_不学无术BruceYoung的博客-CSDN博客

41.声明一个类A,包含类属性a,返回值为A的实例。
例如:
console.log(A.a instanceof A);
输出:“true”。
注意不要在控制台输出任何内容。

class A {static a = new A();
}

42.函数a(cb)是一个异步回调函数,参数cb(x)是回调函数。
声明一个函数f,在函数体中调用三次函数a,要保证三次调用按序执行完成。
将其传回的回调函数参数x按序拼接成字符串,然后在控制台输出。
注意不要在控制台输出多余的内容。

function a(cb) {if (typeof cb === "function") {cb(1);//console.log('true');} else {return "返回值无法获取"}
}
function f() {let str = '';a(function cb(x) {str += x;a(function cb(x) {str += x;a(function cb(x) {str += x;console.log(str);})})})}

43.函数a是一个Promise构造函数的参数函数,其中调用了某个异步回调函数。
声明一个函数f,在函数体中利用a作为参数创建3个Promise实例,调用三次异步回调函数。
要保证三次调用按序执行完成。将传回的值按序拼接成字符串,然后在控制台输出。
注意不要在控制台输出多余的内容。

const f = () => {let str = '';new Promise(a).then(v => {str += v;new Promise(a).then(v => {str += v;new Promise(a).then(v => {str += v;console.log(str);})})})
}

44.函数a(cb)是一个异步回调函数,参数cb(x)是回调函数。
声明一个Promise构造函数的参数函数p,在函数体中调用函数a,传回回调函数cb的参数x。
注意不要在控制台输出任何内容。

let p = (resolve) => {a(function cb(x) {resolve(x)});
}

45.函数a是一个Promise构造函数的参数函数。
声明一个async函数f,执行以p为构造函数参数的Promise,执行成功后传回数据。
注意不要在控制台输出任何内容。

const f = async function () {return await new Promise(a)
}

46.函数p是一个async函数。
声明一个async函数f,在函数体中三次调用p,保证按调用顺序执行完成,将返回的数据拼接成字符串,在控制台输出。
注意不要在控制台输出多余的内容。

const f = async function () {let str = '';let data1 = await p();let data2 = await p();let data3 = await p();console.log('' + data1 + data2 + data3);
}

47.声明一个堆栈类Stack,包含入栈方法push(x)和出栈方法pop()。
通过构造方法的参数指定栈容量。
当栈空时出栈报错“空栈!”,当栈满时入栈报错“满栈!”。
例如:
let a=new Stack(3);
let b="";
for(let i=1;i<5;i++)
    try{a.push(i);}catch(e){b+=e;continue;}
for(let i=1;i<5;i++)
    try{b+=a.pop();}catch(e){b+=e;continue;}
console.log(b);
输出:“满栈!321空栈!”
注意不要在控制台输出多余的内容。

class Stack {#maxlength;arr = [];constructor(maxlength) {this.#maxlength = maxlength;}push(x) {if (this.#maxlength == this.arr.length) {throw '满栈!'return;}this.arr.push(x);}pop() {if (this.arr.length == 0) {throw '空栈!'return;}return this.arr.pop();}
}

48.声明一个队列类Queue,包含入列方法push(x)和出列方法shift()。
通过构造方法的参数指定队列容量。
当队列空时出列报错“空列!”,当队列满时入列报错“满列!”。
例如:
let a=new Queue(3);
let b="";
for(let i=1;i<5;i++)
    try{a.push(i);}catch(e){b+=e;continue;}
for(let i=1;i<5;i++)
    try{b+=a.shift();}catch(e){b+=e;continue;}
console.log(b);
输出:“满列!123空列!”
注意不要在控制台输出多余的内容。

class Queue {#maxlength;arr = [];constructor(maxlength) {this.#maxlength = maxlength;}push(x) {if (this.#maxlength == this.arr.length) {throw '满列!'return;}this.arr.push(x);}shift() {if (this.arr.length == 0) {throw '空列!'return;}return this.arr.shift();}
}

49.声明一个双向队列类Deque ,包含头端入列方法unshift(x)和出列方法shift()、尾端入列方法push(x)和出列方法pop()、获取队列长度的属性length。
通过构造方法的参数指定队列容量。
队列空时出列,或队列满时入列,均返回undefined,队列不变。
例如:
let a=new Queue(3);
let b="";
a.push(1);
a.unshift(2);
a.push(3);
a.unshift(4);
b+=a.length;
b+=a.shift();
b+=a.pop();
b+=a.shift();
b+=a.pop();
console.log(b);
输出:“3231undefined”
注意不要在控制台输出多余的内容。

class Queue {#maxlength;length;arr = [];constructor(maxlength) {this.#maxlength = maxlength;}push(x) {if (this.#maxlength == this.arr.length) {return undefined;}this.arr.push(x);this.length = this.arr.length;}unshift(x) {if (x == undefined) {return;}if (this.#maxlength == this.arr.length) {return undefined;}this.arr.unshift(x);this.length = this.arr.length;}shift() {if (this.arr.length == 0) {return undefined;}let data = this.arr.shift();this.length = this.arr.length;return data;}pop() {if (this.arr.length == 0) {return undefined}let data = this.arr.pop();this.length = this.arr.length;return data;}
}

50.声明一个函数f(a,b,c)。
参数a是数组,元素是块地址和块长,每块地址和块长连续存储,数组已按块地址升序排序。
参数b和c是要插入到数组中的块地址和块长,插入后保持按块地址升序排序。如果块与块之间已连接在一起,则需要合并。
例如:
let a=[2,2,6,3];
f(a,4,2);
console.String());
输出:“2,7”。
注意不要在控制台输出任何内容。

const clear = (arr) => {while (arr.length > 0) {arr.pop();}
}const cutArea = (arr) => {let cpArr = [].concat(arr);clear(arr);while (cpArr.length > 0) {arr.push(cpArr.splice(0, 2));}
}const isLinked = (arr, b, c) => {for (let i = 0; i < arr.length; i++) {if (arr[i][0] + arr[i][1] == b && arr[i + 1][0] - c == b) {return true;}}return false;
}const doLink = (arr, b, c) => {let sumLength = 0;let initial = arr[0][0];for (let i = 0; i < arr.length; i++) {sumLength += arr[i][1];}sumLength += c;clear(arr);arr.push([initial, sumLength]);
}let f = (a, b, c) => {cutArea(a);if (isLinked(a, b, c)) {doLink(a, b, c)} else {let temp = [b, c];a.push(temp)a.sort(function (arr1, arr2) {if (arr1[0] < arr2[0]) {return -1;} else if (arr1[0] == arr2[0]) {return 0;} else {return 1;}});}
}

本文发布于:2024-01-29 10:29:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649538014644.html

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

下一篇:STM32F407
标签:基础   JavaScript
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23