JavaScript常用方法

120 阅读5分钟

一、Math常用方法

1、Math.floor()/Math.ceil() 向下取整/向上取整

向下取整:无论正数负数,都取得是最小值
向上取整:无论正数负数,都取的是最大值

Math.floor(1.1)  // 1
Math.floor(-1.1)  // -2
Math.ceil(1.1)  // 2
Math.ceil(-1.1) // -1

2、Math.round() 四舍五入 正数:遇5进一位 负数:大于5进一位 临界点必须大于5

 Math.round(1.5)   // 2
 Math.round(-1.5) // -1
 Math.round(-1.51) // -2

3、Math.min()/Math.max() 最小值/最大值

 Math.min(1,2,3)  // 1
 Math.max(1,2,3)  // 3

4、Math.random() 获取[0-1)之间的数随机

 获取[min,max)之间的随机数
 Math.random()*(max-min)+min

5、Math.abs() 取绝对值

 Math.abs(-1) // 1

6、Math.sqrt() 开平方

 Math.sqrt(9)  // 3

7、Math.pow(n,m) n的m次幂 Math.pow(3,2) //9 8、Math.PI π

 Math.PI  //3.141592653589793

二、数组常用方法

1、Array.pop()/Array.push() 删除最后一个元素,返回值被删除的元素/在数组尾部添加元素,返回值是数组长度(改变原数组);

2、Array.shift()/Array.unshift() 删除第一个元素,返回值是被删除的元素/在数组头部添加一个元素,返回值是数组的长度(改变原数组);

3、Array.slice(start,end) 数组截取 (不改变原数组,返回新数组)

4、Array.splice(startIndex, length, item) (改变原数组)

5、Array.reverse() 数组翻转 (改变原数组)

6、Array.join()/split() 将数组转成字符串/将字符串转成数组 (不改变原数组,返回字符串/数组)

7、Array.concat() 连接两个或多个数组 (不改变原数组,返回新数组)

8、Array.indexOf() 字符串、数组通用,返回指定字符首次出现的位置(索引值),返回这个索引值,否则返回-1

9、Array.forEach() 仅遍历数组(item,index,arr),无返回值或返回值为undefined

10、Array.map() 数组遍历 (返回新数组)

11、Array.filter() 数组过滤,返回满足条件的元素(返回新数组)

12、Array.some() 返回布尔值,检测数组中是否有某一个值

13、Array.every() 返回布尔值,检测数组中所有元素是否都符合指定条件

14、Array.reduce(()=>(prev,next,index,arr),initialValue) 数组求和; (第一个参数是上一次前两个参数的和; 第二个参数是下一个下标对应的元素;第三个参数是第二个参数的下标;当前元素数组对象initialValue传递给函数的原始值)

合并二维数组
let arr = [[1, 2], [2, 3], [4, 5], [6, 7]]
let res = arr.reduce((a, b) => { return a.concat(b) }, [])   
console.log(res)//[1,2,2,3,4,5,6,7]

统计一个数组中有多少个不重复的单词
practice = () => {
   let reg = ['B', 'A', 'A', 'B', 'C', 'B', 'G'];
   reg.sort()//会改变原数组
   return reg.reduce((a, b) => { a[b] = (a[b] + 1) || 1; return a; }, {})
}
console.log(practice())//{A: 2, B: 3, C: 1, G: 1}

数组去重
practice = () => {
    let reg = [1,1,2,2,22,4,4,6,6,8];
    return reg.reduce((a, b) => { 
        return a.includes(b)?a:a.concat(b)
        // return a.includes(b)?a:[...a,b] }, [])
}
// console.log(practice())[1, 2, 22, 4, 6, 8]

15、Array.isArray() 是Array 类型的一个静态方法,判断是否为数组

var a = [1,2,3];
console.log(typeof a);  //返回“object”
console.log(Array.isArray(a));  //true

16、Array.from() 将类数组或可迭代对象转为数组

17、Array.of() 数组创建,将参数内不同的元素(数据类型)转为数组,若为空就返回一个空数组

var arr = Array.of()
console.log(arr)  // []

var arr1 = Array.of(1)
console.log(arr1)   // [1]

var arr2 = Array.of(1,2,3)
console.log(arr2)   // [1, 2, 3]

var arr3 = Array.of(undefined)
console.log(arr3)  // [undefined]

var arr4 = Array.of(1,'2',3,true,null,undefined)
console.log(arr4)  // [1, "2", 3, true, null, undefined]

Array.of()与Array()区别:
Array.of(7) 创建一个具有单个元素 **7** 的数组,而 Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7undefined 组成的数组)。
var arr5 = Array.of(7) console.log(arr5) // [7]
var arr6 = Array(7) console.log(arr6) // [ , , , , , , ]

18、Array.find() 查找数组中符合条件的第一个元素

19、Array.findIndex() 查找数组中符合条件的第一个元素的索引,找不到返回-1

20、Array.includes() 检测数组中是否包含一个值,返回true、false

21、Array.fill() 将一定范围索引的数组元素内容填充为单个指定的值。第一个参数是填充的数字,第二个参数是起始位置,第三个参数是填充的终止位置的下标

用于向空数组的初始化,接受一个参数,表示填充的值
var arr1 = [];
arr1.fill(6);
console.log(arr1);  //[] 原数组中没有定长度,没有数据可以替换,所以结果仍为空

var arr3 = ['a','b','c'];
arr3.fill(7);
console.log(arr3);  //[7,7,7],将数组的每一项都替换为7

var arr4 = new Array(5);
arr4.fill(5);
console.log(arr4);//[5,5,5,5,5],将数组的5项都填充为5

-接受两个参数,用于指定填充的起始位置和结束位置
var arr2 = [0,0,0];
arr2.fill(3,2,5);
console.log(arr2); //[0,0,3]从第二位填充到第四位,但是数组的长度只有3

var arr5 = [1,2,3,4,5];
arr5.fill(6,2,4);
console.log(arr5); //[1,2,6,6,5]将数组的第二位到第三位填充为6

22、Array.entries() 遍历键和值 返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。
迭代对象中数组的索引值作为key,数组元素作为value。

//定义数组
let arr = ['法外狂徒','职业法师','北大还行','花呗宗师','人生小目标'];
arr.entries();//返回一个可迭代数组
/*
[0, "法外狂徒"]
[1, "职业法师"]
[2, "北大还行"]
[3, "花呗宗师"]
[4, "人生小目标"]
*/
for(let [index,value] of arr.entries()){
    //利用数组解构
    console.log(index,value)
}

23、Array.keys() 遍历键名

24、Array.values() 遍历值

25、Array.flat() 嵌套数组转一维数组

26、Array.sort() 数组排序

var arr2 = [20,13,11,8,0,11];
// 按升序排列
arr2.sort(function(a,b){
    //a,b表示相邻的两个元素
    //若返回值>0,数组元素将按升序排列
    //若返回值<0,数组元素将按降序排列
    return a-b; 
});
console.log(arr2); //[0,8,11,11,13,20]; 新数组按升序排列

// 按降序排列
arr2.sort(function(a,b){
    //a,b表示相邻的两个元素
    //若返回值>0,数组元素将按升序排列
    //若返回值<0,数组元素将按降序排列
    return b-a; 
});
console.log(arr2); //[20,13,11,11,8,0]; 新数组按降序排列

// 随机排序
arr2.sort(function(a,b){
    return Math.random()-0.5;  //返回值的正负概率分别为50%,故升降序排列是随机的
});
console.log(arr2); //新数组随机排序