冒泡排序算法
- 原理:比较相邻的两个元素,如果前一个比后一个大,则交换位置
function sort(data) {
let i, j, swap;
for (i = 0; i < data.length; i++) {
for (j = 0; j < data.length; j++) {
if (data[i] < data[j]) {
swap = data[j];
data[j] = data[i];
data[i] = swap;
}
}
}
return data;
}
sort([1, 3, 2, 5, 4]);
数组去重
- 原理:新建一新数组,遍历传入数组,值不在新数组就 push 进该新数组中
function uniq(array) {
let temp = [];
for (let i = 0; i < array.length; i++) {
if (temp.indexOf(array[i]) == -1) {
temp.push(array[i]);
}
}
return temp;
}
let array = [1, 1, 1, 2, 2, 3, 4, 3, 5, 5];
console.log(uniq(array));
[...new Set(array)];
字符串转驼峰(border-bottom-color ----> borderBottomColor)
- 使用 split('-')将带有-的字符串分割成数组
- 使用循环处理数组的每一项(数组的第一项不用处理)
- 使用 charAt(0)获取字符串的第一个字符 (也可以 string[0]-->获取字符串的第一个字符)
- 使用 toUpperCase()方法将字母变成大写
- 拼接处理后的首字母与 arr[i].substring(1)
- 使用 arr.join('')将数组变成字符串
function change(string) {
let arr = string.split("-");
for (let i = 1; i < arr.length; i++) {
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
let str = arr.join("");
return str;
}
console.log(change("border-bottom-color"));
查找字符串中出现次数最多的字符串
- 原理: 利用对象的 key 值是唯一值,设置字符串的每一项为 key 值
- 初始化 value 值为 1 如果对象中存在 key 值则 value++
- 通过 Object.keys(obj) 获取对象中所有 key 的值返回数组
- 通过 Object.values(obj); 获取所有 value 返回数组
- 通过 Math.max()获取一组数据中的最大值
function getMax(str) {
let obj = {};
for (let i in str) {
obj[str[i]] ? obj[str[i]]++ : (obj[str[i]] = 1);
}
let keys = Object.keys(obj);
let vals = Object.values(obj);
let maxVal = Math.max(...vals);
return {
max: keys[vals.indexOf(maxVal)],
number: maxVal
};
}
console.log(getMax("adfasdfadsfsa111qwqer222223r"));
编写一个产生在 m、n 之间的随机整数的方法
- 原理:Math.round()把数四舍五入为最接近的整数。
- Math.random() 产生一个 0 ~ 1 的随机数
function random(m, n) {
return Math.round(Math.random() * (n - m)) + m;
}
console.log(random(20, 30));
数组中每一项变为 number 类型
- parseInt() 函数可解析一个字符串,并返回一个整数。
function arrItemSwitchNumber(arr) {
return arr.map(item => {
return parseInt(item);
});
}
console.log(arrItemSwitchNumber(["1", "2", "3"]));
二分算法
- 原理:从数组中间值开始查找,如果中间值大于目标值则取取左边,小于取右边,重新传值回调
function helfSearch(ary, num) {
let len = ary.length;
let middle = Math.floor(len / 2);
let mNum = ary[middle];
if (len === 0) return null;
else if (mNum === num) return middle;
else if (mNum > num) return helfSearch(ary.slice(0, middle), num);
else return helfSearch(ary.slice(middle + 1), num);
}
console.log("我是二分算法" + helfSearch([1, 2, 3, 4, 5, 6, 7, 8], 1));
获取到页面中所有选中的 checkbox 怎么做?
- 原理:获取所有的复选框[ele:所有复选框的css选择器]
- 设置一个存放复选框val的数组
- 筛选出选中复选框的元素,向check_val中push val值
function getCheckboxVal(ele) {
let check_ele = document.querySelectorAll(ele);
let check_val = [];
for (let k in check_ele) {
if (check_ele[k].checked) check_val.push(check_ele[k].value);
}
return check_val
}
getCheckboxVal('.box input[type = checkbox]')