JS 方法 2

数据类型方法

1 数字 --> 字符串
-------------------------------------------------------------------------------------------
  1 var hh = String(num);   把数字转成字符串;
  2 var hh = num.toFixed(num);   把数字转成字符串; 并保留 num位小数
  3 num.toString(x);   把 num进制的数字, 转为指定进制的数字字符串; 数字不能直接使用需要依赖变量 num
  4 常num + ""    隐式转为字符串 (最常用的)
-------------------------------------------------------------------------------------------

2 其他类型 --> 数字  
-------------------------------------------------------------------------------------------
  1 var hh = Number(str);    
    传入值必须是 纯数字字符串 / true; false; null; , 才能正确返回数字, 否则返回 NaN
    
  2 var hh = parseInt(str);    
    把字符串转为数字整数; str必须是 数字开头;  无视小数点后面的数, 无视数字后面的非数
    
  3 var hh = parseFloate(str);   
    把字符串转为数字; 可以取到小数; 不可解析16进制  
-------------------------------------------------------------------------------------------

3 布尔型方法
-------------------------------------------------------------------------------------------
  1 Boolean(123);   true
  2 !!123;   true
-------------------------------------------------------------------------------------------

4 其他方法
-------------------------------------------------------------------------------------------
  1 isNaN(value);   先把变量转为数字类型 -- 再判断是否是NaN
  2 typeof x;   判断变量类型 -- 返回值: number / string / boolean / undefined / object / function
  3 console.log( Object.prototype.toString.call( hh ) );    可区分具体的数据类型
-------------------------------------------------------------------------------------------

字符串方法

1 简单方法 (注意: 字符串方法不会改变自身)
-------------------------------------------------------------------------------------------
  1 编码: escape('?!=()#%&');   //%3F%21%3D%28%29%23%25%26 
  2 解码: unescape( escape('?!=()#%&') );   //?!=()#%&

  3 长度: str.length   //空格也算一个子符
  
  4 字符串转数组: str.split(",")    // 指定逗号为分隔符, 分割为数组元素 
        
  5 去空格: str.trim();   //去除字符串俩边的所有空格
  
  6 字母小写 -- str.toLowerCase();
  7 字母大写 -- str.toUpperCase();
  
  8 替换字符 -- str.replace("a", "b");    // 字符b取代a -- 只会取代从左往右第一个a  
-------------------------------------------------------------------------------------------

2 常用方法
-------------------------------------------------------------------------------------------
  1 根据索引返回对应的字符
    1 str.charAt(i) 
    2 str[i]
    3 str.charCodeAt(i)   //返回对应字符的 Unicode 编码

  2 查找一个字符串中是否存在某个字符
    1 str.indexOf("X")     返回从左往右第一个字符的索引 -- 找不到返回 -1
    2 str.lastIndexOf("X")     从右往左找
    3 str.search('x')     等效于str.indexOf()

  3 获取字符串指定区间的字符
    1 var hh = str.slice(index1,index2);    //[index1 index2) 区间的字符串 ~
    2 var hh = str.substr(index);     //[index开始 + 后面所有 ~~
    3 var hh = str.substr(index, num);    //[index开始  个数] 的字符串内容
    4 var hh = str.substring(index);    //[index开始 + 后面所有 ~~
    5 var hh = str.substring(index1, index2);    //[index1 index2) 区间的字符串 ~
-------------------------------------------------------------------------------------------

数组方法

1 会改变原数组的方法
-------------------------------------------------------------------------------------------
1 添加数组元素 -> 数组的开头或结尾添加1或多个数组元素
    1 开头: arr.unshift(77)
    2 结尾: arr.push(4,5,6) 

2 删除数组元素 -> 删除开头或结尾的1个数组元素
    1 开头: arr.shift() 
    2 结尾: arr.pop()

3 数组元素的 - 删除 - 插入 替换等操作 (替换用的少)
    1 arr.splice(2)     删除 [index 开始 - 到后面的所有数组元素
    2 arr.splice(1, 3)     删除 [index开始 以及往后的 2个数组元素 -33 arr.splice(1, 0, 6)    在索引1的位置 - 插入数组元素 6; 0 的位置可以控制在插入前是否删除元素
    4 arr.splice(1, 3 , 7, 8, 9)    把索引 [1 - 3] 的数组元素 -- 替换为 7, 8, 9 (不确定, 用的少)

4 排列数组元素
    1 arr.sort()  -> 数组元素的ASCII码排序
    2 arr.sort(function(a,b){
    
     return a-b})  -> 数字从小到大排序
    3 arr.sort(function(a,b){
    
     return b-a})  -> 数字从大到小排序
    4 arr.reverse()  -> 数组元素的倒序排列
-------------------------------------------------------------------------------------------

2 不会改变元素组的方法
-------------------------------------------------------------------------------------------
1 数组转为字符串
    1 arr.join("-") --> 不传默认逗号分隔 --> ""==没有分隔  --> "-"==-来分隔
    2 arr.toString()
  
2 其他数据转为真数组
    1 var hh = Array.from(str / arr)     -- 可将伪数组或字符串转为真数组
    2 var hh = Array.of(1,2,3,"hh")      -- 可将零散元素转为数组
  
3 遍历
    1 数组遍历 -- forEach( (v,i,a)=>{
    
    } ) -- 可修改原数组无返回值
    2 数组遍历 -- map( (v,i,a)=>{
    
    } ) -- 不可修改原数组有返回值
  
    3 过滤数组 -- arr.filter( x => x>3 ) -- 返回需要的数组元素组成的新数组
  
    4 遍历判断 -- arr.every(v => v>3) -- 遍历数组元素, 只要有一个不大于3, 返回值 == false
    5 遍历判断 -- arr.some(v => v>3) -- 遍历数组元素, 只要有一个大于3, 返回值 == true
  
4 查找数组元素
	1 arr.indexOf( "hh" ) -- 返回从左往右第一个 hh字符 的 index, 如没有返回 -1
	2 arr.lastIndexOf( "hh" ) -- 返回从右往左第一个 hh字符 的 index, 如没有返回 -1
	3 arr.includes(3, 5) -- 判断数组内是否存在3, 从索引 [5 开始查找;  返回布尔值;  参数2--为可选
	
5 判断变量是不是一个数组
	1 Array.isArray( hh )  --  true / false (H5+, 支持IE9以上) 
	2 hh instanceof Array  --  true / false 
	
6 截取指定区间的数组元素
	1 arr.slice( 2 )  -- 返回的区间 [2 +后面全部的数组元素 
	2 arr.slice(0, 2)  -- 返回的区间 [0,2) 
	
7 合并数组
	1 arr.concat( arr1, arr2, arr3, 66 )  -- 合并3个数组以及一个数组元素
	
8 数组去重
	1 let set = Array.from(new Set([1, 2, 2, 3]))
-------------------------------------------------------------------------------------------

对象方法

1 创建对象的方法
-------------------------------------------------------------------------------------------
var obj = {
    
    };
var obj = new Object();
var obj = new Test('aaaa', 22, 'bbb');   //构造函数创建  (混合模式等等一些方法创建对象  --面向对象笔记)
var hh = Object.create(obj);   //创建一个指定 __proto__ 原型对象的空对象, 不指定的话, 该对象就没有 __proto__
-------------------------------------------------------------------------------------------

2 JS 内置对象 -> 数字对象 Math
-------------------------------------------------------------------------------------------
  1 Math.max(1,2,3)   返回最大值 - Math.max.apply([], arr)  可求数组最大值
  2 Math.min(1,2,3)   返回最小值 - 
  
  3 Math.ceil(2.3);   == 向上取整, 返回 3
  4 Math.round(2.3);   == 四舍五入取整, 返回3  'n.5 往大了取, 负值 -1.5 == 1'
  5 Math.floor(2.6);   == 向下取整, 想小的值取整, 返回 2
  
  6 Math.abs(-8)   返回绝对值 - 会隐式转换
  7 Math.random()   返回 [0-1) 范围内的随机小数
  8 Math.PI;    返回圆周率 


## 数字方法相关示例

  1 得到俩个数之间的随机整数, 且包含着俩个整数
    function getRandom(min, max) {
    
      return Math.floor(Math.random() * (max - min + 1)) + min; }
            
  2 随机点名
    1 var arr = ["小白", "小黑", "小明", "小绿", "小红"]
    2 console.log(arr[getRandom(0, arr.length - 1)])
-------------------------------------------------------------------------------------------

3 JS 内置对象 -> 日期对象 Date
-------------------------------------------------------------------------------------------
  1 var date = new Date()     获取系统当前时间的 Date 对象
  2 var date = new Date('2018-10-1 8:8:8')     获取指定时间对象
  3 var date = +new Date()     获取时间戳: 当前日期 距离 197011日 过了多少毫秒
  4 Date.now()     也是获取时间戳
  5 var date = +new Date('2018-10-1 8:8:8')     返回指定的时间的时间戳


## 相关操作

  1 设置3天后的时间
    let d = new Date() 
    d.setDate(d.getDate()+3);

  2 提取 Date 实例对象中的时间属性
    1 date.getFullYear()2 date.getMonth()+13 date.getDate()4 date.getDay()       星期几  '星期一 == 1  周日 == 0'
    5 date.getHoures()6 date.getMinutes()7 date.getSeconds()-------------------------------------------------------------------------------------------

其它常用方法

1 JSON 方法
-------------------------------------------------------------------------------------------
  1 json 字符串转为 JS对象 --> JSON.parse(jsonStr)
  2 JS对象转为 json 字符串 --> JSON.stringify(jsonObj)
-------------------------------------------------------------------------------------------

2 浅复制 + 深复制方法
-------------------------------------------------------------------------------------------
  1 
-------------------------------------------------------------------------------------------

3 改变 this指向的方法  
-------------------------------------------------------------------------------------------
1 让下面函数内部的 this 指向对象 obj

  1 bind() 方法
      1 声明式函数: function test() {
    
    console.log(this)} 
	      1 改变指向: test = test.bind(obj) 
	      2 注意: bind() 方法只改变 this指向, 不执行函数
	      
      2 函数表达式: var hh = function() {
    
    }.bind(obj)  //非函数声明可以直接调用 bind() 方法

	  3 setInterval(function() {
    
    }}.bind(obj),1000)  //常用于改变定时器中的 this

  2 call() 方法
    1 声明式函数: function test(a, b) {
    
    console.log(this)} 
    2 改变指向并执行: test = test.call(obj, 5, 6)
	3 注意: 在改变指向的同时 - 会执行函数 - 并可以传递实参给函数

  3 apply() 方法
    1 声明式函数:  function test(a, b) {
    
    console.log(this)}
    2 改变指向并执行: test = test.apply(obj, [5, 6])
    3 apply 与 call 的区别: apply 实参是以数组的形式传递
-------------------------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_46178697/article/details/113734768