js (ECMAScript) 对数据处理的 方法、属性总结

注意:原生类型的数据本身是没有属性、方法的。但是 有的原始类型(如 string),当他 调用属性或方法时,JS引擎会先对原始类型数据进行包装(即隐式的转换为相应的对象)  https://www.cnblogs.com/websir/p/5192095.html

一、数字整型不会隐式转换成对象,需要自己手动通过 new Number(123)  转换成 Number对象;浮点型数据 会 隐式转化

  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number

  • 实例属性:
    constructor、prototype    ----   【这两个属性所有的对象都有,下面的就不写了】
  • 实例方法:(es6及以上的方法属性,字体设为 青色
    toFixed【转换为有小数点的字符串】、toString、toExponential【科学计数法表示,变成字符串类型】、toLocaleString【数字在特定语言环境下的表示字符串,功能强大】
    toPrecision【类似toFixed功能】
    
    不常用:sFinite、toExponential(x)【转化为 指数 计算法】、toPrecision(x)【转化为 类似指数计算法的指定长度数据】、
        valueOf()、isInteger【判断给定的参数是否为整数】、isSafeInteger【判断参数值是否是一个"安全整数"】

     注意:整数直接调用toString 会报错,如2.toString,因为js会把 2.解析为小数点。可以写成 (2).toString()。

  • 构造函数的方法
    isNaN【判断值是否为NaN】、isFinite【判断值是否为有限数】、isInteger【判断值是否为整型】

二、字符串(会隐式转换成对象) :http://www.runoob.com/jsref/jsref-obj-string.html

属性:

length

方法:

indexOf、lastIndexOf、replace【某些字符替换另一些字符】、toUpperCase【大小写转换】、toLowerCase、split【转为数组】、charAt【指定位置的字符】、
charCodeAt【指定位置字符的Unicode码】、includes【是否包含指定字符串】、match【匹配】、search【类似indexOf,查找匹配字符串的下标】、
slice【截取指定下标位置的字符串】、substr【截取指定长度的字符串】、substring【这个功能和
slice类似】、trim【去除字符串两边的空白】、
startsWith【是否以指定的子字符串开头】、endsWith【通startWith】

不常用:
concat【字符串拼接,一般用+号】、fromCharCode、lastIndexOf、repeat、toLocaleLowerCase、toLocaleUpperCase、valueOf、toString

三、正则表达式   http://www.runoob.com/jsref/jsref-obj-regexp.html

属性:

global【是否设置g修饰符】、ignoreCase、multiline、lastIndex【规定下次匹配的起始位置】、source【返回正则表达式的匹配模式】

方法:

exec【检索字符串中指定的值 的 位置】、test【检索字符串中指定的值】

不常用:toString

四、数组   http://www.runoob.com/jsref/jsref-obj-array.html   或  https://www.cnblogs.com/Faith-Yin/p/12360892.html

  • 实例属性:
length
  • 实例方法:
concat【连接两个或更多的数组】、forEach【数组每个元素都执行一次回调函数】、indexOf【搜索数组中的元素,并返回它所在的位置】、lastIndexOf【和indexOf功能一样,从后面找】、
join【把数组的所有元素放入一个字符串,默认逗号分隔】、map【通过根据指定函数,返回处理后的数组】、pop【删除数组的最后一个元素并返回删除的元素】、
push【向数组的末尾添加一个或更多元素,并返回新的长度】、shift【删除并返回数组的第一个元素】、unshift【数组的开头添加一个或更多元素,并返回新的长度】、
reduce【根据指定的函数,将数组元素计算为一个值】、reduceRight【和reduce一样的用法,不过是从右边开始计算】、reverse【反转数组的元素顺序】、
slice【选取数组的的一部分,并返回一个新数组】、some【检测数组元素中是否有元素符合指定条件】、every【检测数组元素的每个元素是否都符合条件】、
sort【通过指定函数,对数组进行排序】、splice【从数组中添加或删除元素】、filter【过滤数组,返回一个满足要求的数组】
不常用:valueOf【返回数组对象的原始值】、toString【把数组转换为字符串,并返回结果。是以逗号分隔的。一般使用join方法实现】

es6 新增的方法
find【找到第一个符合条件的成员】、findIndex【找到第一个符合条件的成员的索引值】、includes【判断一个数组是否包含一个指定的值】、fill【使用固定值来填充数组(改变原数组)】、
keys【遍历数组的键名,返回键名可迭代对象】、values【遍历数组键值,返回键值可迭代对象】、entries【遍历数组的键名和键值,返回可迭代对象】、
copyWithin【拷贝数组指定项,填充原数组】、filter【过滤数组,返回一个满足要求的数组】、flat【对数组内嵌套的数组“拉平”】、flatMap、
  • 构造函数的方法
from【类数组/迭代对象 转化为数组】、of【将一组值转换成数组】、isArray【判断对象是否为数组】、

五、Date 对象 (实例对象,通过new Date() 创建,里面参数不同,创建不同的时间对象)    http://www.runoob.com/jsref/jsref-obj-date.html  或  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date(推荐,MDN)

创建 Date 对象的4中方式:new Date()  的参数不同,最后创建的都是时间对象,只是时间不同而已。    https://blog.csdn.net/yue31313/article/details/79609661

new Date()              // Thu Mar 21 2019 21:41:25 GMT+0800 (中国标准时间)   相当于传入 当前时间点 作为参数获取的时间对象
new Date(2017,06,06) // Thu Jul 06 2017 00:00:00 GMT+0800 (中国标准时间) 过去某个时间的时间对象 (以整数作为参数,有几种模式) new Date(“2017/06/06”) // Tue Jun 06 2017 00:00:00 GMT+0800 (中国标准时间) 过去某个时间的时间对象 (以字符串作为参数,有几种模式) new Date(毫秒数) // Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间) 从1970年1月1日开始算起的毫秒数 的对应的时间对象

注:所有主流浏览器都支持的格式为: var dateTime = new Date("2017/09/12 13:42:00"); 即参数为 yyyy/MM/dd hh:mm:ss 格式 字符串
  • 实例方法:
getFullYear【获取对象中的年,4位数返回】、getMonth【获取对象中的月,获取的月份要加1】、getDate【获取 Data对象中的 几号】、getDay【获取 Data对象中的 星期几】、
getHours【获取对象中的 时】、getMinutes【获取对象中的分】、getSeconds【获取对象的秒】、getMilliseconds【获取对象中的 毫秒】、getTime【获取时间戳】

toDateString【将 Date对象的部分(日期),以字符串(Fri Mar 22 2019)输出】、
toString【将 Date对象,转换为字符串(Fri Mar 22 2019 13:07:00 GMT+0800 (中国标准时间))】、
toTimeString【将 Date对象的部分(时间),以字符串(13:11:54 GMT+0800 (中国标准时间))输出】、

toLocaleDateString【根据本地时间格式,将 Date对象的 年/月/日 输出】、toLocaleTimeString【根据本地时间格式,把Date对象的 时:分:秒 输出】、
toLocaleString【根据本地时间格式,把Date对象的 年月日 时分秒 输出】

不常用
getUTCDate【根据世界时从 Date 对象返回月中的一天 (1 ~ 31)】、
toISOString【ISO标准时间格式,字符串】、toJSON【ISO标准时间格式,以 JSON 数据格式返回日期字符串】、
getTimezoneOffset【与标准时间的差,以分为单位】、
setFullYear【设置时间对象中的年】、setMonth()、setDate【设置时间对象中 几号】、setHours()、setMinutes()、setSeconds()、setMilliseconds()、
setTime【以毫秒设置Date对象】、valueOf【返回 Date 对象的原始值,即一个时间戳】

重点:1、时间对象是可以直接比较大小的,如 new Date('2018-8-8 17:35:00')>new Date('2018-8-8 19:20:11') // true。

      2、时间对象 一旦参与运算,就会自动中转化为时间戳。所以上面的时间可以进行比较。 如

+new Date()   //  输出  1575438671452
  • 构造函数的方法(非时间对象)
parse【获取某个时间到1970年的时间戳】(即转化为时间戳,参数可以是时间字符串,也可以是时间对象)

注意:原生的 Date 对象 本身存在一点问题的,这里说明下

  • 同一日期,不同格式获取到的时间对象的时间点是不一样的。如
    new Date('2020/1/1')     //  Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)
    new Date('2020-1-1')     //  Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)
    new Date('2020 1 1')      // Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)
    
    new Date('2020/01/01')  // Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)
    new Date('2020-01-01')  // Wed Jan 01 2020 08:00:00 GMT+0800 (中国标准时间)
    new Date('2020 01 01')  //  Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)

    说明:同一日期(主要是日期,设定时间就不会),获取到不同的时间戳值,这就是一个bug问题了。在比较时间和运算就会出问题,所以再开发中应尽可能规避这个问题。
    解决方案:目前我们就先规避吧,能用’/‘拼接的就不用’-‘,即便是用了,也最好替换成’/'再做判断。实在规避不了的,就强制设置时间参数为00:00:00。基本上可以解决大部分的问题。

六、Math 对象 (不用创建,本身就是实例对象)      http://www.runoob.com/jsref/jsref-obj-math.html

属性:

PI【圆周率】、E【算术常量 e】           其它几个基本不用,这里不提

方法:(一般数值是作为方法传进去的)

ceil【对数进行上舍入】、floor【对数进行下舍入】、max(x,y,z,...,n)【返回 x,y,z,...,n 中的最高值】、min【返回最低值】、
pow(x,y)【 x 的 y 次幂】、random【0~1随机数】、round【四舍五人】、

不常用:abs、三角函数、exp(x)、log(x)、sqrt(x)

七、Error 对象  http://www.runoob.com/jsref/jsref-obj-error.html

属性: Error 对象现有属性,没有方法

name【设置或返回一个错误名】、message【设置或返回一个错误信息】

八、全局方法:    http://www.runoob.com/jsref/jsref-obj-global.html   (typeof 属于关键字,不是方法)

方法:

decodeURI【解码某个编码的 URI】、encodeURI【把字符串编码为 URI】、isNaN【检查某个值是否是数字,不区分数据类型】、Number【转换为数字,转不了的 返回 NaN】、
decodeURIComponent【解码一个编码的 URI 组件,比decodeURI编码的字符更多】、encodeURIComponent【同理】、
parseFloat【字符串转变为一个浮点数,转不了的 返回NaN】、parseInt【字符串变成10进制的整型,任意进制的数据都可以转化】、String【转换为字符串】

不常用:escape【对字符串进行编码】、unescape【对由 escape编码的字符串进行解码】、eval【把字符串作为脚本来执行】、isFinite

 字符串(URL)编码 方法: 参考  https://www.cnblogs.com/wfblog/p/10582944.html

九、 函数对象

属性:

es6的属性:name【返回定义时的函数名】、

十、FormData 对象          https://developer.mozilla.org/zh-CN/docs/Web/API/FormData

方法:

append【追加新的属性值】、delete【删除一个键值对】、get【返回与给定键关联的第一个值】、getAll【返回与给定键关联的所有值的数组】、
set【设置属性值,如果有就覆盖掉】、has【是否包含某些键】、

十一、URLSearchParams 对象【解析查询字符串的对象】        https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams

方法:

append【插入一个指定的键/值对作为新的搜索参数】、delete【删除指定的搜索参数及其对应的值】、get【获取指定搜索参数的第一个值】、getAll【返回数组】、
has【判断是否存在此搜索参数】、set【设置一个搜索参数的新值】、sort【按键名排序】,toString【返回搜索参数组成的字符串】 entries【遍历用】、keys【遍历用】、values【遍历用】

十二、 URL 对象 (实例对象,通过new URL() 创建)   https://developer.mozilla.org/zh-CN/docs/Web/API/URL

  • 实例属性:
hash、hostname、href、origin、pathname【以 '/' 起头紧跟着 URL 文件路径的 DOMString】、port、protocol、search、
searchParams【是一个只读的URLSearchParams对象】、username【淘汰】、password【淘汰】
  • 实例方法:
toString【返回完整的URL字符串,即url.href的值】、toJson【和toString返回是一样的值】
  • 构造函数的方法:
createObjectURL、revokeObjectURL

十三、

 


es6 中各种方法请参考https://www.runoob.com/w3cnote/es6-tutorial.html 

一、Symbol (是原始数据类型):  let sy = Symbol("KK");       (个人理解:Symbol数据,可让两个一样的字符串,表达的是两个不同的名称,即   Symbol()  !=  Symbol()) 

  用法: 由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。(感觉没什么用,虽然使用Symbol 不会出现重名覆盖的问题,但是)

1、Symbol 是原始数据类型,所以 sy 没有属性、方法。
2、Symbol 有两个全局方法: Symbol.for()【全局搜索 Symbol 中是否有该字符对应的 Symbol 值,有九返回Symbol 值】、 Symbol.keyFor()【返回一个已登记的 Symbol 类型值的 key】

二、Map(映射)对象:  (map对象 类似 object对象,但是键名可以是任意类型的数据。字典型数据上常用,字典名可以是任意数据) https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map

 属性:

size【键值对的数量】、constructor【对象原型】

 方法:

set【设值】、get【取值】、has【是否有值】、forEach【Map的迭代】、clear【清除对象中的元素】、delete【移除某个键值对】、 其他的用法参考链接

特殊用法:for...of【Map的迭代】、Map 与 Array的转换

三、Set(集合)对象:( set对象 类似 数组,本质是一个集合,set对象的键是数字,不能指定键的名称,目前 不能通过键获取值,需要遍历实现)  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set

 属性:

size【set对象的值的个数】、constructor【对象原型】

 方法:

add【设值】、has【是否有值】、forEach【Set的迭代】、clear【清除对象中的元素】、delete【移除某个元素】、  其他的用法参考链接
特殊用法:利用set对象的储存值的唯一性,可以实现 数组去重、并集、交集、差集 等功能

 四、Promise 对象(注意,Promise只是一个对象 不是方法,参数是一个回调函数,创建对象时立即执行):

   如果要实现  调用某个函数后 变成一个 Promise 对象,只要这个函数  return 出来一个promise 对象就可以了。

function ajax(URL) {
    return new Promise(function (resolve, reject) {   // return 一个 promise对象
        var req = new XMLHttpRequest(); 
        req.open('GET', URL, true);
        req.onload = function () {
        if (req.status === 200) { 
                resolve(req.responseText);   // pending 状态 变成 fulfilled(成功)
            } else {
                reject(new Error(req.statusText)); // pending 状态 变成 rejected(失败)
            } 
        };
        req.onerror = function () {
            reject(new Error(req.statusText));
        };
        req.send(); 
    });
}
View Code

 方法:

Promise 实例的方法:   then、cath
Promise 静态方法: Promise.resolve【将现有对象转为Promise对象】、Promise.reject【将现有对象转为Promise对象】

五、Object对象:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object

 方法:

Object实例的方法:

Object静态方法:Object.assign【通过复制一个或多个对象来创建一个新的对象】、Object.create【使用指定的原型对象和属性创建一个新的对象】、
Object.getOwnPropertyDescriptor【返回对象指定的属性配置】、 ...

 

 

 


 

个别API说明下:

一、toLocaleString 方法:表示 把一个对象 根据语言环境,转话为对应语言下的字符串。比如 数字、时间 ,不同国家有不同的表示格式。https://juejin.cn/post/7049885477888852004

  • 包含这个API 的类有
    Array.prototype.toLocaleString([locales[,options]])  
    Number.prototype.toLocaleString([locales[,options]])
    Date.prototype.toLocaleString([locales[,options]]) 

    他们的参数结构都一样,locales表示语言代码。后面options有哪些属性,看 MDN官网 toLocaleString
    不同类型的对象,option属性也是不同的。下面介绍几个常用的属性

  • Array类型的好像不同地区的都一样。
  • Number类型对象的 option属性有:   style,currency
     // 1、将数字进行千分位切割展示
    var num = 1331231  
    console.log(num.toLocaleString())  //  1,331,231
    
     // 2、将数字转为货币样式
    var number = 123456.789;  
    console.log(number.toLocaleString('zh', { style: 'currency', currency: 'EUR' }));    //€123,456.79   
    console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY' }));    //¥123,456.79   
    console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY',currencyDisplay:'code' }));    //CNY 123,456.79
    console.log(number.toLocaleString('zh', { style: 'currency', currency: 'CNY',currencyDisplay:'name' }));    //123,456.79人民币
    
    // 3、将数字转为百分比形式  
    var num1 = 0.12 
    var num2 = 2.45
    console.log(num1.toLocaleString('zh',{style:'percent'}))  //  12%
    console.log(num2.toLocaleString('zh',{style:'percent'}))  //  245%  
    
    // 4、将纯数字/字符串数组所有元素用逗号拼接起来  
    var numArray = [12,564,'55',5,'8']  
    console.log(numArray.toLocaleString('zh'))  //  12,564,55,5,8
  • Date类型对象的 option属性有:   hour12、weekday、year、month、day
    new Date().toLocaleString('zh-CN', {hour12: false})  // 是否12小时制
    
    new Date().toLocaleString('zh-CN', {weekday: "long"})   // 星期二
    new Date().toLocaleString('zh-CN', {weekday: "short"})  // 周二
    
    new Date().toLocaleString('zh-CN', {year: "numeric"})   // 2022年
    
    new Date().toLocaleString('zh-CN', {month: "long"})     //  五月
    new Date().toLocaleString('zh-CN', {month: "short"})    // 5月
    
    new Date().toLocaleString('zh-CN', {day: "numeric"})    // '31日'
    
    new Date().toLocaleString('zh-CN', {dateStyle: "full"}) // 2022年5月31日星期二
    new Date().toLocaleString('zh-CN', {dateStyle: "long"})  // 2022年5月31日
    new Date().toLocaleString('zh-CN', {dateStyle: "short"}) // 2022/5/31

     

     

 

posted @ 2018-06-13 10:19  吴飞ff  阅读(1198)  评论(0编辑  收藏  举报