因为条目比较乱,所以就先不整理目录了,有需要可以Ctrl+F。
一,比较并返回最高值
maxnumber = Math.max(A, B, C);
注:0 或多个值。在 ECMASCript v3 之前,该方法只有两个参数。
引:w3school——JavaScript max() 方法
二,比较并返回最小值
minnumber = Math.min(A, B, C);
注:0 或多个值。在 ECMASCript v3 之前,该方法只有两个参数。
引:w3school——JavaScript min() 方法
三,反转字符串/切割字符串/反转数组/拼接字符串
str = str.split('').reverse().join('');
注:split() 方法用于把一个字符串分割成字符串数组。
w3school——JavaScript split() 方法
reverse() 方法用于颠倒数组中元素的顺序。
w3school——JavaScript reverse() 方法
join() 方法用于把数组中的所有元素放入一个字符串。
w3school——JavaScript join() 方法
四,判断某元素是否在指定数组中
var set = new Set([1,2,3,4,5]);
set.add(5); //重复添加的元素被自动过滤
set.delete(1); //删除一个key
set.has(1); //是否存在该元素
注:Set和Map类似,也是一组key的集合,但不存储value。
引:简书——js中set方法
let arr = [1,2,3];
arr.includes(1) //true
arr.includes(5) //false
注:includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
引:JavaScript Array includes() 方法
五,获取指定位置的字符串
var str = "123456789";
str.slice(A,B); //A为起始截取位置,B为结束截取位置
注:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素,不对原数组进行修改。B选填,不填为到数组结束的所有元素。
引:JavaScript slice() 方法
var str = "123456789";
str.substr(A,B); //A为起始截取位置,B为截取长度
注:返回一个新的字符串,包含从 A(包括 A 所指的字符) 处开始的长度为B个字符。B选填,不填为到数组结束的所有元素。
引:JavaScript substr() 方法
六,计算X的Y次幂
x **= y;
注:指数运算符(**)即可表示X的Y次幂。
引:JavaScript表示x的y次幂
Math.pow(x, y);
注:pow() 方法可返回 x 的 y 次幂的值。x 为底数。必须是数字。y 为幂数。必须是数字。
引:JavaScript pow() 方法
七,删除数组中的重复项
const set = new Set([1, 2, 3, 4, 4]);
console.log([...set]);//[1,2,3,4];
注:展开语法(Spread syntax),将数组表达式或者string在语法层面展开;还可以在构造字面量对象时,将对象表达式按key-value的方式展开。
引:展开语法(Spread syntax)
Js中去除数组中重复元素的6种方法
八,快速排序模板
function quick_sort(arr, l, r) {
if (l >= r) {
return;
}
let i = l - 1, j = r + 1, x = arr[l + r >> 1];
while (i < j) {
do {
i++;
} while (arr[i] < x);
do {
j--;
} while (arr[j] > x);
if (i < j) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
quick_sort(arr, l, j);
quick_sort(arr, j + 1, r);
}
let arr = [4, 3, 5, 1, 4];
quick_sort(arr, 0, arr.length - 1)
console.log(arr);
九,大数相加
function addBigNum(a,b){
var res = '',
loc = 0;
a = a.split('');
b = b.split('');
while(a.length || b.length || loc){
//~~把字符串转换为数字,用~~而不用parseInt,是因为~~可以将undefined转换为0,当a或b数组超限,不用再判断undefined
//注意这里的+=,每次都加了loc本身,loc为true,相当于加1,loc为false,相当于加0
loc += ~~a.pop() + ~~b.pop();
//字符串连接,将个位加到res头部
res = (loc % 10) + res;
//当个位数和大于9,产生进位,需要往res头部继续加1,此时loc变为true,true + 任何数字,true会被转换为1
loc = loc > 9;
}
return res.replace(/^0+/,'');
}
十,大数相乘
function multiplyBigNum(num1, num2) {
//判断输入是不是数字
if (isNaN(num1) || isNaN(num2)) return "";
let len1 = num1.length,
len2 = num2.length;
let pos = [];
//j放外面,先固定被乘数的一位,分别去乘乘数的每一位,更符合竖式演算法
for (let j = len2 - 1; j >= 0; j--) {
for (let i = len1 - 1; i >= 0; i--) {
//两个个位数相乘,最多产生两位数,index1代表十位,index2代表个位
let index1 = i + j,
index2 = i + j + 1;
//两个个位数乘积加上当前位置个位已累积的数字,会产生进位,比如08 + 7 = 15,产生了进位1
let mul = num1[i] * num2[j] + (pos[index2] || 0);
//mul包含新计算的十位,加上原有的十位就是最新的十位
pos[index1] = Math.floor(mul / 10) + (pos[index1] || 0);
//mul的个位就是最新的个位
pos[index2] = mul % 10;
}
}
//去掉前置0
let result = pos.join("").replace(/^0+/, "");
return result || '0';
}
整理中。。。