js 数学相关常见方法
1.Math.max:Math.max()返回返回一组数中的最大值。
let numb = [2, 3, 4, 5, 6];
console.log(Math.max(...numb)); //6
console.log(Math.max(1, 3, 2)); //3
console.log(Math.max(-1, -3, -2)); //-1
2.Math.min:Math.min()返回返回一组数中的最小值。
let numb = [2, 3, 4, 5, 6];
console.log(Math.min(...numb)); //2
console.log(Math.min(1, 3, 2)); //1
console.log(Math.min(-1, -3, -2)); //-3
3.Math.pow():Math.pow()返回基数(base)的指数(exponent)次幂,如 2 的 3 次方。
console.log(Math.pow(2, 3)); //8
4。Math.ceil() 函数返回大于或等于一个给定数字的最小整数。
console.log(Math.ceil(0.99)); //1
console.log(Math.ceil(-0.99)); //-0
console.log(Math.ceil(-6.001)); //-6
console.log(Math.ceil(6.001)); //7
5。Math.floor() 返回小于或等于一个给定数字的最大整数。
console.log(Math.floor(0.99)); //0
console.log(Math.floor(-0.99)); //-1
console.log(Math.floor(-6.001)); //-7
console.log(Math.floor(6.001)); //6
6。Math.round:Math.round()方法四舍五入取
console.log(Math.round(0.99)); //1
console.log(Math.round(-0.99)); //-1
console.log(Math.round(-6.001)); //-6
console.log(Math.round(6.001)); //6
7.Math.random():Math.random()返回介于 0(包含) ~ 1(不包含) 之间的一个随机数
- 得到一个两数之间的随机数(公式)
function getRandomArbitrary(min, max) {
return Math.random() \* (max - min) + min;
}
实战(得到一个 3 到 13 的随机数)
console.log(Math.random() \* (13 - 3) + 3)
实战(得到一个 3 到 13 的随机整数)
1.parseInt()方法 抛去小数部分,只取整数部分:
console.log(parseInt(Math.random() \* (13 - 3) + 3))
2.Math.round()方法四舍五入取整:
console.log(Math.round(Math.random() \* (13 - 3) + 3))
3,Math.floor()方法向下取整,整数部分值不变::
console.log(Math.floor(Math.random() \* (13 - 3) + 3))
4,Math.ceil()方法向上取整,整数部分值+1
console.log(Math.ceil(Math.random() \* (13 - 3) + 3))
js 数组相关常见方法
1.map:map() 方法返回一个新数组,但不会改变原始数组
let num = [2, 3, 4, 5, 6]
const result = num.map(item => item \* 2)
console.log(num) //[ 2, 3, 4, 5, 6 ]
console.log(result)//[4, 6, 8, 10, 12]
2.filter(): filter 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let num1 = [2, 3, 4, 5, 6];
const result1 = num1.filter((item) => {
return item < 4;
});
console.log(num1); //[ 2, 3, 4, 5, 6 ]
console.log(result1); //[ 2, 3 ]
3.forEach(): forEach 没有返回值,forEach 如果遍历基本数据类型,是不改变原数组,如果是引用类型 -> 类似对象数组是可以改变的
遍历基本数据类型
let num2 = [2, 3, 4, 5, 6]
num2.forEach(item =>
item = item \* 2
)
console.log(num2)//[ 2, 3, 4, 5, 6 ]
遍历引用类型
let objArr = [
{
name: "王力宏",
age: 22,
},
{
name: "林俊杰",
age: 33,
},
];
objArr.forEach((item) => {
if (item.name === "王力宏") {
item.age = 34;
}
});
console.log(objArr); //[ { name: '王力宏', age: 34 }, { name: '林俊杰', age: 33 } ]
4.every:every()方法用于检测数组所有元素是否都符合指定条件,结果返回布尔值,如果数组中检测到有一个元素不满足,则整个表达式返回 false
- 检测数组中元素是否都为偶数
let num3 = [2, 3, 4, 5, 6];
let num4 = [2, 4, 6];
const a = num3.every((item) => {
return item % 2 == 0;
});
const b = num4.every((item) => item % 2 == 0);
console.log(a); //false
console.log(b); //true
5.some:some()方法用于检测数组所有元素是否有一个符合指定条件,结果返回布尔值,如果数组中检测到有一个元素满足,则整个表达式返回 true
- 检测数组中元素是否都为偶数
let num4 = [2, 3, 4, 5, 6];
let num5 = [23, 43, 63];
const a1 = num4.some((item) => item % 2 == 0);
const b1 = num5.some((item) => item % 2 == 0);
console.log(a1); //true
console.log(b1); //false
6.reduce:reduce()方法用于接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
let num6 = [2, 3, 4, 5, 6];
const result2 = num6.reduce((prev, cur, index, arr) => {
// console.log(prev)//2 undefined undefinedundefined prev: 表示上一次调用回调时的返回值,或者初始值 init;
// console.log(cur)//3 4 5 6 cur: 表示当前正在处理的数组元素;
//console.log(index)//1,2,3,4 index: 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为 0,否则索引为 1;
//console.log(0)// 0:代表 init, 表示初始值。传入了初始值 0,所以开始时 prev 的值为 0,默认为 0,可省
return prev + cur;
}, 0);
console.log(result2); //20
7.push:push()方法用于向数组末尾追加值,改变原数组
let num7 = [2, 3, 4, 5, 6];
num7.push(7, 8);
console.log(num7); //[2, 3, 4, 5, 6,7,8]
8.pop:pop()方法删除数组末尾值,改变原数组
let num8 = [2, 3, 4, 5, 6];
num8.pop();
console.log(num8); //[ 2, 3, 4, 5 ]
9.shift:shift()方法删除数组头部值,改变原数组
let num9 = [2, 3, 4, 5, 6];
num9.shift();
console.log(num9); //[ 3, 4, 5, 6 ]
10.unshift:unshift()方法用于向数组头部追加值,改变原数组
let num10 = [2, 3, 4, 5, 6];
num10.unshift(1, 2);
console.log(num10); //[1, 2, 2, 3,4, 5, 6]
11.concat:concat()方法用于连接多个数组,类似于…(扩展运算符)
let arr1 = [2, 3, 4];
let arr2 = [5, 6, 7];
let arr3 = [8, 9];
let num11 = arr1.concat(...arr2, arr3);
console.log(num11); //[ 2, 3, 4, 5,6, 7, 8, 9]
12. toString:toString()方法用于将数组,数字转字符串
let num12 = [2, 3, 4, 5, 6];
let num13 = 66;
console.log(num12.toString()); //"2,3,4,5,6"
console.log(num13.toString()); //"66"
13. join:join() 方法用于把数组中的所有元素放入一个字符串。
let arr4 = [2, 3, 4, 5];
console.log(arr4.join("-")); //"2-3-4-5"
14. split:split()方法:用于把一个字符串分割成字符串数组.
let arr5 = "2018-10-18";
console.log(arr5.split()); //[ '2018-10-18' ]
console.log(arr5.split("-")); //[ '2018', '10', '18' ]
15. reverse:reverse() 方法用于把数组中的所有元素颠倒。
let arr6 = [2, 3, 4, 5];
console.log(arr6.reverse()); //[ 5, 4, 3, 2 ]
16. sort:sort() 方法用于把数组中排序
- 从小到大
let result3 = [2, 5, 4, 1];
result3.sort((prev, cur) => {
return prev - cur;
});
console.log(result3); //[ 1, 2, 4, 5 ]
- 从大到小
let result4 = [2, 5, 4, 1];
result4.sort((prev, cur) => {
return cur - prev;
});
console.log(result4); //[ 5, 4, 2, 1 ]
17.slice:slice() 方法可从已有的数组中返回选定的元素,数组截取,不改变原数组
- slice(start,end)
- start:开始位置的索引
- end:结束位置的索引(但不包含该索引位置的元素)
截取数组 1 到 2 位
let result5 = [2, 5, 4, 1];
let result6 = result5.slice(1, 2);
console.log(result6); //[ 5 ]
console.log(result5); //[ 2, 5, 4, 1 ]
15.splice:splice()方法,算的上是万能方法,具有删除,插入,替换的功能,改变原数组
splice(index,count)
index:开始位置的索引count:要删除元素的个数
返回:返回的是包含被删除元素的数组对象
1:删除功能
let result7 = [2, 5, 4, 1];
let result8 = result5.splice(1, 2);
console.log(result7); //[ 5, 4 ]
console.log(result8); //[ 2, 1 ]
2:插入功能
- splice(index,0,插入的项)
参数
- index:插入元素的索引值
let a = [1, 2, 3, 4, 5];
let arr11 = a.splice(2, 0, "haha");
console.log(a); //[ 1, 2, 'haha', 3, 4, 5 ]
3:替换功能
- splice(index,1,替换的项)
参数
index:替换元素的索引值
let a = [1, 2, 3, 4, 5];
let arr11 = a.splice(2, 1, "haha");
console.log(arr11); //[]
console.log(a); //[ 1, 2, 'haha', 4, 5 ]
16.find:find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
let aa = [1, 5, 2, 3, 4, 5];
const result9 = aa.find((item) => item > 3);
console.log(aa); //[ 1, 5, 2, 3, 4, 5 ]
console.log(result9); //5