0.1.8 • Published 2 years ago

native-class-ext v0.1.8

Weekly downloads
95
License
ISC
Repository
-
Last release
2 years ago

js原生对象添加常用方法

所有的扩展方法都以$开头加到原型上


Array

let test = [2,3,5,6,7,9]

根据位置删除 $removeByIndex

  • 语法
    test.$removeByIndex(index)
  • 参数
    index {Numbar} 删除的位置0开始
  • 返回值
    {Array} 删除的值
  • 例子
    let test = [2,3,5,6,7,9]
    console.log(test.$removeByIndex(1)) // [3]
    console.log(test) // [ 2, 5, 6, 7, 9 ]

根据值删除 $remove

  • 语法
    test.$remove(val, [key])
  • 参数
    val {Object} 要删除的值
    key {function|String} 如果数组元素是对象,key为对象比对的字段,或比较函数
  • 返回值
    {Array} 删除的值
  • 例子
    test = [2,3, {name: 3}]
    console.log(test.$remove(3)) // [ 3 ]
    console.log(test) // 输出 [ 2, { name: 3 } ]
    console.log(test.$remove(3, 'name')) // [ { name: 3 } ]
    console.log(test) // 输出 [ 2 ]

添加或删除 $addOrRemove

  • 语法
    test.$addOrRemove(val, padStart, [key])
  • 参数
    val {Object} 要添加或删除的值
    padStart {Boolean} 是否添加到开头,默认false
    key {function|String} 如果数组元素是对象,key为对象比对的字段,或比较函数
  • 返回值
    {Boolean} 添加返回true
  • 例子
    test = [2,3, {name: 3}]
    console.log(test.$addOrRemove(8), test) // true [ 2, 3, 8 ]
    console.log(test.$addOrRemove(9, true), test) // true [ 9, 2, 3, 8 ]
    console.log(test.$addOrRemove(8), test) // false [ 9, 2, 3 ]
    console.log(test.$addOrRemove(3, 'name'), test) // false [ 9, 2, 3 ]

替换 $replace

  • 语法
    test.$replace(index, value)
  • 参数
    index {Number} 位置,0开始
    value {Object} 值
  • 返回值
    {Array} 旧的值
  • 例子
    test = [2, 3, 9]
    console.log(test.$replace(1, 6), test) // [ 3 ] [ 2, 6, 9 ]

查找元素返回位置 $findIndex

  • 语法
    test.$findIndex(value, key)
  • 参数
    val {Object} 要找的值
    key {function|String} 如果数组元素是对象,key为对象比对的字段,或比较函数
  • 返回值
    {Number} 位置,0开始
  • 例子
    test = [2, 3, {name: 3}]
    console.log(test.$findIndex(3)) // 1
    console.log(test.$findIndex(3, 'name')) // 2

查找元素返回值 $findEl

  • 语法
    test.$findEl(value, key)
  • 参数
    val {Object} 要找的值
    key {function|String} 如果数组元素是对象,key为对象比对的字段,或比较函数
  • 返回值
    {Object} 值
  • 例子
    test = [2, 3, {name: 3}]
    console.log(test.$findEl(3)) // 3
    console.log(test.$findEl(3, 'name')) // { name: 3 }

最后一个值 $last

  • 语法
    test.$last()
  • 参数

  • 返回值
    {Object} 值

  • 例子
    test = [2, 3]
    console.log(test.$last()) // 3

交换值 $swap

  • 语法
    [].$swap(0, 2)
  • 参数 index1 {Number} 位置 index2 {Number} 位置
  • 例子
    let test = [2, 3, 5]
    test.$swap(0, 2)
    console.log(test) // [5, 3, 2]

判断空数组 $isEmpty

  • 语法
    Array.$isEmpty(test)
  • 参数
    test {Array} 数组

  • 返回值
    {Boolean} 不是数组 或 长度 返回true

  • 例子
    test = [2, 3]
    console.log(Array.$isEmpty([])) // true
    console.log(Array.$isEmpty(test)) // false
    let test1;
    console.log(Array.$isEmpty(test1)) // true

Date

日期格式化 $format

  • 语法
    new Date().$format([reg]);
  • 参数
    reg {String} 格式,默认yyyy-MM-dd HH:mm:ss

    1. yy/yyyy 年
    3. M/MM 月
    5. d/dd 日
    6. H/HH 时
    7. m/mm 分
    8. s/ss 秒
    9. S 毫秒
    1. ww 星期
  • 返回值
    {String}

  • 例子
    new Date().$format('yyyy-MM-dd HH:mm:ss ww');

格式秒 $formatSeconds

  • 语法
    Date.$formatSeconds(seconds)
  • 参数
    seconds {Number} 秒数

  • 返回值
    {String}

  • 例子
    Date.$formatSeconds(61)// = "1分1秒"

本地时间与服务器时间的差异 $serverTimeOffset

有使用 $newServerDate、$nowServer需要初始化,服务器时间-本地时间,单位毫秒

  • 语法
    Date.$serverTimeOffset = {服务器时间}-Date.now()

服务器时间 $newServerDate

  • 语法

    Date.$newServerDate()
  • 返回值
    {Date} new Date(Date.$nowServer())

服务器时间戳 $nowServer / $now10

  • 语法

    Date.$nowServer()
    Date.$now10()
  • 返回值
    {Date} Date.now() + Date.$serverTimeOffset

时间单位转换 $UNIT

  • 例子
    Date.$UNIT.DAYS.toHours(1) // =24 天转小时
    Date.$UNIT.HOURS.toMinutes(1) // =60 小时转分钟
    Date.$UNIT.MINUTES.toSeconds(1) // =60 分钟转秒
    Date.$UNIT.SECONDS.toMillis(1) // =1000 秒转毫秒

解析Date对象 $parseDate

  • 语法
    Date.$parseDate(date)
  • 参数
    date {String|Number|Date} 需要转的值

  • 返回值
    {Date}

  • 例子
    Date.$parseDate('2021-01-01')
    Date.$parseDate(1609430400000)
    Date.$parseDate(1609430400)

复制一份副本 $copy

不同对象,值相同

  • 返回值
    {Date}
  • 例子
    new Date().$copy())

获取月最后一天 $getMonthLastDay

  • 返回值
    {Date}
  • 例子
    new Date().$getMonthLastDay()

获取0点日期 $getZeroDate

  • 返回值
    {Date}
  • 例子
    new Date().$getZeroDate()// = new Date(yyyy, MM, dd)

判断是否是今天 $isToday

  • 返回值
    {Boolean}
  • 例子
    new Date().$isToday()// true

两个日期相差几天 $differDay

  • 语法
    $differDay(date)
  • 参数
    date {Date} 另一个日期

  • 返回值
    {Number} 相差天数

  • 例子
    new Date(2021, 01, 01).$differDay(new Date(2021, 01, 03)) // = -2

下一个半小时 $next30

返回 yyyy-MM-dd HH:00:00 或 yyyy-MM-dd HH:30:00

  • 语法
    $next30([copy])
  • 参数
    copy {Boolean} 是否复制一份修改,默认false 修改原对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-02-01 10:01:01');
    let d2 = d1.$next30();
    console.log(d2==d1)// true
    console.log(d2.$format())// '2021-02-01 10:30:00'
    d2 = d1.$next30(true);
    console.log(d2==d1)// false
    console.log(d2.$format())// '2021-02-01 11:00:00'

添加月 $addMonth

  • 语法
    $addMonth(num[, copy])
  • 参数
    num {Number} 添加月数,可负
    copy {Boolean} 是否在新的Date对象上添加,默认 false 修改当前对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-01-01 00:00:00');
    d1.$addMonth(1).$format()// 2021-02-01 00:00:00
    d1.$addMonth(-1, true).$format()// 不修改原对象=2021-01-01 00:00:00
    d1.$format()// 2021-02-01 00:00:00

添加年 $addYear

  • 语法
    $addYear(num[, copy])
  • 参数
    num {Number} 添加年数,可负
    copy {Boolean} 是否在新的Date对象上添加,默认 false 修改当前对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-01-01 00:00:00');
    d1.$addYear(1).$format()// 2022-01-01 00:00:00
    d1.$addYear(-1, true).$format()// 不修改原对象=2021-01-01 00:00:00
    d1.$format()// 2022-01-01 00:00:00

添加天 $addDay

  • 语法
    $addDay(num[, copy])
  • 参数
    num {Number} 添加天数,可负 copy {Boolean} 是否在新的Date对象上添加,默认 false 修改当前对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-01-01 00:00:00');
    d1.$addDay(1).$format()// 2021-01-02 00:00:00
    d1.$addDay(-1, true).$format()// 不修改原对象=2021-01-01 00:00:00
    d1.$format()// 2021-01-02 00:00:00

添加小时 $addHours

  • 语法
    $addHours(num[, copy])
  • 参数
    num {Number} 添加数,可负 copy {Boolean} 是否在新的Date对象上添加,默认 false 修改当前对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-01-01 00:00:00');
    d1.$addHours(1).$format()// =2021-01-01 01:00:00
    d1.$addHours(-1, true).$format()// 不修改原对象=2021-01-01 00:00:00
    d1.$format()// =2021-01-01 01:00:00

添加分钟 $addMinutes

  • 语法
    $addMinutes(num[, copy])
  • 参数
    num {Number} 添加数,可负 copy {Boolean} 是否在新的Date对象上添加,默认 false 修改当前对象

  • 返回值
    {Date}

  • 例子
    let d1 = Date.$parseDate('2021-01-01 00:00:00');
    d1.$addMinutes(1).$format()// =2021-01-01 00:01:00
    d1.$addMinutes(-1, true).$format()// 不修改原对象=2021-01-01 00:00:00
    d1.$format()// =2021-01-01 00:01:00

测试此日期是否在指定日期之前 $before

  • 语法
    $before(when)
  • 参数
    when {Date} 另一个日期

  • 返回值
    {Boolean} this<when

  • 例子
    let d1 = new Date();
    let d2 = d1.$addHours(1, true);
    d1.$before(d2)// =true

测试此日期是否在指定日期之后 $after

  • 语法
    $after(when)
  • 参数
    when {Date} 另一个日期

  • 返回值
    {Boolean} this>when

  • 例子
    let d1 = new Date();
    let d2 = d1.$addHours(1, true);
    d1.$after(d2)// =false

Number

加 $add

  • 语法
    $add(augend)
  • 参数
    augend {Number} 被加数

  • 返回值
    {Number}

  • 例子
    0.1.$add(0.2) // =0.3

减 $subtract

  • 语法
    $subtract(subtrahend)
  • 参数
    subtrahend {Number} 被减数

  • 返回值
    {Number}

  • 例子
    0.3.$subtract(0.2)// =0.1

乘 $multiply

  • 语法
    $multiply(multiplicand)
  • 参数
    multiplicand {Number} 乘数

  • 返回值
    {Number}

  • 例子
    0.1.$multiply(3)// =0.3

除 $divide

  • 语法
    $divide(divisor[, scale[, roundingMode]])
  • 参数
    divisor {Number} 除数
    scale {Number} 保留小数位数,默认2
    roundingMode {Number} 舍入方式,默认Number.$ROUND_HALF_UP

  • 返回值
    {Number}

  • 例子
    2.4.$divide(0.8) // =3
    (153).$divide(1000, 1, Number.$ROUND_HALF_UP)// =0.2

设置精度 $setScale

  • 语法
    $setScale([scale[, roundingMode]])
  • 参数
    scale {Number} 保留小数位数,默认2
    roundingMode {Number} 舍入方式,默认Number.$ROUND_HALF_UP

    1. $ROUND_UP 进位
    2. $ROUND_DOWN 舍弃
    3. $ROUND_HALF_UP 四舍五入
  • 返回值
    {Number}

  • 例子
    0.153.$setScale(1, Number.$ROUND_UP)// 0.2
    0.143.$setScale(1, Number.$ROUND_UP)// 0.2
    (-0.143).$setScale(1, Number.$ROUND_UP)// -0.2
    
    0.143.$setScale(1, Number.$ROUND_DOWN)// 0.1
    (-0.153).$setScale(1, Number.$ROUND_DOWN)// -0.1
    
    0.153.$setScale(1, Number.$ROUND_HALF_UP)// 0.2
    0.143.$setScale(1, Number.$ROUND_HALF_UP)// 0.1
    (-0.153).$setScale(1, Number.$ROUND_HALF_UP)// -0.2
    (-0.143).$setScale(1, Number.$ROUND_HALF_UP)// -0.1

Promise

都完成后回调 allSettled

部分浏览器本身就支持文档

  • 语法
    Promise.allSettled(iterable);
  • 参数
    iterable {Array} 一个可迭代的对象,例如Array,其中每个成员都是Promise。

  • 返回值
    {Array} 一旦所指定的 promises 集合中每一个 promise 已经完成,无论是成功的达成或被拒绝,未决议的 Promise将被异步完成。 那时,所返回的 promise 的处理器将传入一个数组作为输入,该数组包含原始 promises 集中每个 promise 的结果。
    对于每个结果对象,都有一个 status 字符串。如果它的值为 fulfilled,则结果对象上存在一个 value 。如果值为 rejected,则存在一个 reason 。value(或 reason )反映了每个 promise 决议(或拒绝)的值。

  • 例子
    let p = new Promise((r)=>r(1))
    let p1 = new Promise((res, rej)=>rej(1))
    Promise.allSettled([p, p1]).then(res=>{
    		   // res = [{"status": "fulfilled","value": 1,},
    			//{"reason": 1,"status": "rejected",}]
    })

最后执行 finally

部分浏览器本身就支持文档

  • 语法
    new Promise().finally();

不抛异常的方式返回结果 $result

  • 返回值
    {Object} {status: true/false, data: 返回数据}
  • 例子
    new Promise((r)=>r(1)).$result().then(res=>{
    		   // res= {status: true, data: 1}
    })
    new Promise((res, rej)=>rej(1)).$result().then(res=>{
    		   // res= {status: false, data: 1}
    })

String

判断空字符串 $isEmpty

  • 语法
    String.$isEmpty(str[, minLength])
    "".$isEmpty(minLength)
  • 参数
    str {String}
    minLength {Number} 最小长度,默认1
  • 例子
    String.$isEmpty("") // true;
    String.$isEmpty("1"))// false;
    String.$isEmpty("1", 2))// true;
    
    "".$isEmpty()) // true;
    "1".$isEmpty()) // false;
    "1".$isEmpty(2)) //true;

指定位置插入字符串 $insertStr

  • 语法
    "".$insertStr(start, str)
  • 参数
    start {Number} 出入位置,0开始
    str {String} 要插入的字符串
  • 例子
    "124".$insertStr(2, '3')// 1234

字符串填充浏览器兼容 padStart/padEnd

  • 语法
    "".padStart(maxLength, padStr)
  • 参数
    maxLength {Number} 字符串最大长度
    str {String} 不够长度填充字符串
  • 例子
    "1".padStart(2, '0')// 01
    "1".padEnd(2, '0')// 10

Object

获取对象值数组(兼容处理) values

  • 例子
    Object.values({a: 66})// [66]
0.1.8

2 years ago

0.1.7

2 years ago

0.1.4

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago