js练习题第12天 答案及解析

本篇文章是js基础练习题第十二天的答案及解析部分,纯题目部分请移步js基础练习题 第12天

正文

1.有三个数字:1、2、3,能组成多少个互不相同且无重复数字的三位数?各是多少?试用JS实现之。

答案:如下代码块所示

1
2
3
4
5
6
7
8
9
10
11
12
13
let arr1 = [1, 2, 3];
let arr2 = [];
for (let i of arr1) {
for (let j of arr1) {
for (let k of arr1) {
if (new Set([i, j, k]).size == 3) {
arr2.push(i * 100 + j * 10 + k);
}
}
}
}
console.log(arr2.length);
console.log(arr2);

我总觉得有比三层暴力循环好的算法,如果您能提供的话,欢迎留言哦!


2.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数有几种取值?分别是多少?通过JS实现之。

答案:如下代码块所示

1
2
3
4
5
6
7
8
let arr = [];
for (let n = 0; n <= 13; n++) {
let y = 84 / n - n / 2;
if(Number.isInteger(y)) {
arr.push( y * y - 100);
}
}
console.log(arr);

设该数为x。则x + 100 = y * yy * y + 168 = z * z。假设z = y + n,则 y * y + 168 = (y + n)(y + n),化解可得y = 84 / n - n / 2。则 x = y * y - 100。当y为整数时,条件成立。


3.利用JS随机生成1-100的10个整数,并把这10个数由小到大输出。

答案:如下代码块所示

1
2
3
4
5
let arr = [];
for (var i = 0; i < 10; i++) {
arr.push(Math.floor(Math.random() * 100) + 1);
}
console.log(arr.sort((a, b) => a - b));

注意Math.random()生成的[0, 1)形式的随机数,即包含0,不包含1。


4.将一个数组的2到5号(不包括5号)位置的数据复制到另一个数组的1号位置中(索引值从0开始)。利用JS实现之。

答案:如下代码块所示

1
2
3
4
let arr1 = [1, 2, 3, 4, 5, 6];
let arr2= [7, 8, 9];
arr2.splice(1, 0, arr1.slice(2, 5));
console.log(arr2);

说明

  1. 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
  1. 答案中,若有错误和需完善的地方,可在下方留言反馈哈~~

  2. 查看纯习题版,请点击js基础练习题 第12天

--本文结束 感谢阅读--
创作十分不易,原创更应鼓励