JS一般的に使用される拡張メソッド

日々の開発プロセスでは、多くの場合、ネイティブオブジェクトのメソッドが使用されていないJavaScriptの状況が発生したため、多くの場合、拡張のためのJavaScriptのネイティブメソッドを持っています。本当の仕事、いくつかの方法が頻繁にいくつかの記録を行うために使用された場合であるここでは、それを取ることができる必要があります。

1、文字列の記事

1.1、文字列操作を追加します:

単精度浮動小数点問題は、バイナリ表現の一部の桁が無限大の場合のように計算JavaScriptに障害となっています。1.1例えば、プログラムは、真の表現1.1することができないだけある程度の精度を達成することができるが、精度の損失を避けることができません。

String.prototype.add = function (arg2) {
    let r1, r2, m
    try {
        r1 = this.toString().split('.')[1].length
    } catch (e) {
        r1 = 0
    }
    try {
        r2 = arg2.toString().split('.')[1].length
    } catch (e) {
        r2 = 0
    }

    m = Math.pow(10, Math.max(r1, r2))
    return (Math.round(this * m + arg2 * m) / m).toString()
}

1.2、文字列が減算動作を行います

String.prototype.reduce = function (arg2) {
    let r1, r2, m
    try {
        r1 = this.toString().split('.')[1].length
    } catch (e) {
        r1 = 0
    }
    try {
        r2 = arg2.toString().split('.')[1].length
    } catch (e) {
        r2 = 0
    }
    m = Math.pow(10, Math.max(r1, r2))
    return (Math.round(this * m - arg2 * m) / m).toString()
}

2、ナンバーの論文

2.1、図は加算演算であります

Number.prototype.add = function (arg2) {
    let r1, r2, m
    try {
        r1 = this.toString().split('.')[1].length
    } catch (e) {
        r1 = 0
    }
    try {
        r2 = arg2.toString().split('.')[1].length
    } catch (e) {
        r2 = 0
    }

    m = Math.pow(10, Math.max(r1, r2))
    return Math.round(this * m + arg2 * m) / m
}

2.2、デジタル減算動作を行います

Number.prototype.reduce = function (arg2) {
    let r1, r2, m
    try {
        r1 = this.toString().split('.')[1].length
    } catch (e) {
        r1 = 0
    }
    try {
        r2 = arg2.toString().split('.')[1].length
    } catch (e) {
        r2 = 0
    }
    m = Math.pow(10, Math.max(r1, r2))
    return Math.round(this * m - arg2 * m) / m
}

3、配列arrayの記事

3.1、最大の配列を得るために

Array.prototype.getMax = function () {
    return Math.max.apply(null, this.map((seg) => {return +seg}))
}

3.2、値の配列のディープコピーを取得します

Array.prototype.getCopy = function () {
    let that = this
    return JSON.parse(JSON.stringify(that))
}

3.3、0の特殊文字(記号)を使用してアレイを置き換えます

Array.prototype.replaceZero = function (symbol = '-') {
    return this.map(function (seg) {
        return +seg == 0 ? symbol : seg
    })
}

3.4、指定された配列要素IDXを得、前記アレイ長の長さがIDX、IDX要素番号が検索され、減算長* Nを超えた場合

Array.prototype.getItemByIdx = function (idx = 0) {
    function getArrByIdx (list, idx) {
        if (list.length - 1 < idx) {
            idx -= list.length
            return getArrByIdx(list, idx)
        } else {
            return list[idx]
        }
    }
    return getArrByIdx(this, idx)
}

3.5、組成物からのランダム数で定義された配列の新たな配列要素を取得します。必要な数としてカウント

Array.prototype.getRandomArrayElements = function (count) {
    var shuffled = this.slice(0),
        i = this.length,
        min = i - count,
        temp, index
    while (i-- > min) {
        index = Math.floor((i + 1) * Math.random())
        temp = shuffled[index]
        shuffled[index] = shuffled[i]
        shuffled[i] = temp
    }
    return shuffled.slice(min)
}

3.6、配列のランダム要素を取得

Array.prototype.getRandomElement = function () {
    let lth = this.length - 0.1
    return this[Math.floor(Math.random() * lth)]
}

3.7、配列要素とシークプラス

Array.prototype.sum = function () {
    return eval(this.join('+'))
}

おすすめ

転載: www.cnblogs.com/JHCan333/p/11698235.html