<!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>
<script>
// 1.返回一个有范围的随机数
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
// 2.返回数组中的最大值
function getMax(arr) {
let max = arr[0];
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
// 3.查找1-100之间的素数
// for (let i = 1; i <= 100; i++) {
// let isFind = false;
// for (let j = 2; j < i - 1; j++) {
// if (i % j === 0) {
// isFind = true;
// break;
// }
// }
// if (i > 1 && !isFind) {
// console.log(i);
// }
// }
// 4.乱序函数
function s(arr) {
let index, random, temp;
index = arr.length;
while (index != 0) {
random = Math.floor(Math.ranodm() * index);
index--;
temp = arr[index];
arr[index] = arr[random];
arr[random] = temp;
}
return arr;
}
// 5.最简单的继承
function A() {
this.name = "张";
}
function B() {
this.name = "李";
}
B.prototype = new A();
// 6.字符串反转
function myRever(str) {
let arr = str.split("");
let i = 0;
let j = arr.length - 1;
while (i < j) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
let s = arr.join("");
return s;
}
// console.log(myRever("abc"));
// 7.判断数字是不是NaN
function myNaN(num) {
let ret = Number(num);
ret += "";
if (ret === "NaN") {
return true;
} else {
return false;
}
}
// 8.检验字符串是否含有空格
const reg = /\s/;
let str1 = "abc def";
// console.log(reg.test(str1));
// console.log(str1.indexOf(" ") === -1);
// 9.搜索过滤函数
function filterBy(arr, val) {
return arr.filter((item) => {
return item.name.match(val);
});
}
// 10.数组扁平化
function myFlat(arr) {
let resArr = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
resArr = resArr.concat(myFlat(item));
} else {
resArr.push(item);
}
});
return resArr;
}
// console.log(myFlat([1, 2, [3, 4, [5, 6]]]));
// 11.返回数组中重复的元素
function getRepeatElement(arr) {
const temp = {};
let resArr = [];
for (let i = 0; i < arr.length; i++) {
if (!temp[arr[i]]) {
temp[arr[i]] = 1;
} else if (!resArr.includes(arr[i])) {
resArr.push(arr[i]);
}
}
return resArr;
}
// console.log(getRepeatElement([1, 1, 2, 3, 5, 5,'a','a']));
// 12.找到数组中出现次数最多的元素
function getFrequency(arr) {
let obj = {};
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
} else {
obj[arr[i]]++;
}
}
let result; //结果对象
for (let prop in obj) {
if (!result || obj[prop] > result.frequency) {
result = {
prop: prop,
frequency: obj[prop],
};
}
}
return result;
}
// 13.得到字符串中最长子串的长度
function getSubStrLen(str) {
let arr = [];
let max = 0;
for (let i = 0; i < str.length; i++) {
let index = arr.indexOf(str[i]);
if (index !== -1) {
arr.splice(0, index + 1);
}
arr.push(str.charAt(i));
max = Math.max(arr.length, max);
}
return max;
}
// str = "abcabcbb";
// str = "aaaaaa";
// str = "pwwkew";
// console.log(getSubStrLen(str));
// 14.罗马字符转数字
function romanToNum(str) {
let num = 0;
let x = 0;
let y = 0;
for (let i = str.length; i >= 0; i--) {
switch (
str[i]
// case "I": x = 1; break;
// case "V": x = 5; break;
// case "X": x = 10; break;
// case "L": x = 50; break;
// case "C": x = 100; break;
// case "D": x = 500; break;
// case "M": x = 1000; break;
) {
}
if (y <= x) {
num += x;
} else {
num -= x;
}
y = x;
}
return num;
}
//15.
</script>
</body>
</html>
我的工具函数集合
于 2022-10-18 00:44:13 首次发布