可能不是最简便的方法,有问题的话欢迎指导
前言
这是问题列表,后边附步骤
1. 从元年到2021年 所有的闰年, (被4整除&&不能被100整除 ) || 能被400整除
2.猴子吃桃 每天吃1/2的桃 吃完之后扔一个 第七天 剩一个 桃子的总数
3.一对幼兔 一个月成小兔 再过一个月成兔 并生下一对幼兔 1年后 多少对 (不会死)
4.100-999所有的水仙花数 个位十位百位 立方和 == 数字本身
5. 共有10元 铅笔 1.5 笔记本 2 橡皮 0.3 雪糕 2 四种都得有 剩下的钱不够买两块雪糕 多少种方案?
6.得到10-20的六个不重复的随机整数
7. var str = "border-left-color-margin-left-top"; //borderLeftColor 驼峰转换
8.打乱数组 [1,2,3,4,5] //[5,3,1,4,2] [2,5,3,1,4]
9.数组展平 [1,2,3,[4,5,[6,7,8,[9,10]]]] => [1,2,3,4,5,6,7,8,9,10]
10.验证一个字符串是否是回文字符串 1234321
11.查找任意字符串中出现次数最多的字符 "abababaaa"
12. 一个含有字符串的数组,例如:["a","b","a","c","b","d","a",1,1],需要得到一个新数组 ["a1","b1","a2","c","b2","d","a3","11","12"]
要求: 未重复的元素不处理 重复的元素加上编号 不能影响正常数组的顺序
13. 去除数组中重复的元素 ["a","a",1,1] => ["a",1] (2种方式实现)
14. 用循环的方式 完成数组排序 [1,3,2,4,5] => [1,2,3,4,5]
15.求出任意非负整数区间中1出现的次数。如:算出100~1300的整数中1出现的次数?
// 1从元年到2021年 所有的闰年, (被4整除&&不能被100整除 ) || 能被400整除
for (let index = 1; index < 2022; index++) {
if ((index % 4 == 0 && index % 100 != 0) || index % 400 == 0) {
console.log("num1", index);
}
}
// 2.猴子吃桃 每天吃1/2的桃 吃完之后扔一个 第七天 剩一个
// 总共多少个桃子 初始值=1
var sum2 = 1
for (let index = 0; index < 7; index++) {
sum2 = (sum2 + 1) * 2
}
console.log("num2", sum2);
// 3.一对幼兔 一个月成小兔 再过一个月成兔 并生下一对幼兔 1年后 多少对 (不会死)
// 幼 小 成
var a3 = 1, b3 = 0, c3 = 0, sum3 = 1
for (let index = 1; index < 13; index++) {
b3 = a3
c3 = c3 + b3
a3 = c3
}
sum3 = a3 + b3 + c3;
console.log("num3", "12个月后,一共有兔子" + sum3 + "对,其中幼兔" + a3 + "对,小兔" + b3 + "对,成兔" + c3 + "对");
// 4.100-999所有的水仙花数 个位十位百位 立方和 == 数字本身
for (let index = 100; index < 1000; index++) {
var ge = index % 10
var shi = parseInt(index % 100 / 10)
var bei = parseInt(index / 100)
if (Math.pow(bei, 3) + Math.pow(shi, 3) + Math.pow(ge, 3) == index) {
console.log("num4", index);
}
}
// 5. 共有10元 铅笔 1.5 笔记本 2 橡皮 0.3 雪糕 2 四种都得有 剩下的钱不够买两块雪糕 多少种方案?
for (let x = 0; x < 11 / 1.5; x++) {
for (let y = 0; y < 11 / 2; y++) {
for (let z = 0; z < 11 / 0.3; z++) {
for (let i = 0; i < 11 / 2; i++) {
if ((x != 0 && y != 0 && z != 0 && i != 0) && 1.5 * x + 2 * y + 0.3 * z + 2 * i <= 10 && 1.5 * x + 2 * y + 0.3 * z + 2 * i >= 6) {
console.log("num5", ` 铅笔 ${x} 笔记本 ${y} 橡皮 ${z} 雪糕 ${i} `);
}
}
}
}
}
// 6.得到10-20的六个不重复的随机整数
var arr = []
for (let index = 0; index < 6; index++) {
getnum(arr)
}
console.log("num6", arr);
function getnum(array) {
for (let i = 0; i > -1; i++) {
var random = Math.round(Math.random() * 10 + 10)
var bool = true
for (let j = 0; j < array.length; j++) {
if (random == array[j]) {
bool = false
break
}
}
if (bool) {
array.push(random)
return
}
}
}
// 7. var str = "border-left-color-margin-left-top"; //borderLeftColor 驼峰转换
var str = "border-left-color-margin-left-top";
var newstr = str.split("-")
let result = newstr.map((item, index) => {
return index == 0 ? item : item[0].toUpperCase() + item.slice(1)
})
console.log("num7", result.join(""));
// 8.打乱数组 [1,2,3,4,5] //[5,3,1,4,2] [2,5,3,1,4]
var arr8 = [1, 2, 3, 4, 5]
arr8.sort(function () {
return (0.5 - Math.random())
})
console.log("num8", arr8);
// 9.数组展平[1, 2, 3, [4, 5, [6, 7, 8, [9, 10]]]] => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var arr9 = [1, 2, 3, [4, 5, [6, 7, 8, [9, 10]]]]
var newarr9 = arr9.toString().split(",").map(Number)
console.log("num9", newarr9);
// 10.验证一个字符串是否是回文字符串 1234321
var str10 = "1234321"
var arr10 = Array.from(str10).reverse().join("")
if (arr10 == str10) {
console.log("num10", "是回文字符串");
} else {
console.log("num10", "不是回文字符串");
}
// 11.查找任意字符串中出现次数最多的字符 "skdvmmdoskjm"
var str11 = "skdvmmdoskjm"
var obj11 = {}
var num11 = 0
var index11 = 0
for (let index = 0; index < str11.length; index++) {
// 判断对象中是否存在[str11[index]]
if (obj11[str11[index]]) {
obj11[str11[index]]++
} else {
obj11[str11[index]] = 1
}
}
for (const key in obj11) {
if (num11 < obj11[key]) {
num11 = obj11[key]
index11 = key
}
}
console.log("num111", "最多的字" + index11);
// 12. 一个含有字符串的数组,例如:["a","b","a","c","b","d","a",1,1],需要得到一个新数组 ["a1","b1","a2","c","b2","d","a3","11","12"]
// 要求: 未重复的元素不处理 重复的元素加上编号 不能影响正常数组的顺序
var arr12 = ["a", "b", "a", "c", "b", "d", "a", 1, 1]
var obj12 = {}
var num12 = 0
var index12 = 0
for (let index = 0; index < arr12.length; index++) {
if (obj12[arr12[index]]) {
obj12[arr12[index]]++
} else {
obj12[arr12[index]] = 1
}
for (const key in obj12) {
if (num11 < obj12[key]) {
num12 = obj12[key]
index12 = key
}
}
}
for (const key in obj12) {
if (obj12[key] > 1) {
var count = 0
arr12.forEach((item, index) => {
if (item == key) {
count++
arr12[index] = arr12[index] + count.toString()
}
})
}
}
console.log("num112", arr12);
// 13. 去除数组中重复的元素 ["a","a",1,1] => ["a",1] (2种方式实现)
var arr13 = ["a", "a", 1, 1]
var newarr13 = Array.from(new Set(arr13))
console.log("num13", newarr13);
for (let index = 0; index < arr13.length; index++) {
for (let i = index + 1; i < arr13.length; i++) {
if (arr13[index] == arr13[i]) {
arr13.splice(i, 1)
i--
}
}
}
console.log("num13", arr13);
// 14. 用循环的方式 完成数组排序 [1,3,2,4,5] => [1,2,3,4,5]
var arr14 = [1, 3, 2, 4, 5]
arr14.sort(function (a, b) {
return a - b
})
console.log("num14", arr14);
// 15.求出任意非负整数区间中1出现的次数。如:算出100~1300的整数中1出现的次数?
var obj15 = 0
for (let index = 100; index < 1301; index++) {
for (let i = 0; i < index.toString().length; i++) {
if (index.toString()[i] == 1) {
obj15++
}
}
}
console.log("num15", obj15);