模拟js中常用的的API

/**
 * 模拟indexOf()
 * @param string
 * @param key
 * @returns {number}
 */
function str_indexOf(string, key) {
    var result = -1;
    for (var i = 0; i < string.length; i++) {
        if (i <= string.length - key.length) {
            var sub_key = '';
            for (var j = 0; j < key.length; j++) {
                sub_key += String(string[i+j]);
            }
            if (sub_key === key) {
                return i;
            }
        }
    }
    return result;
}
/**
 * 字符串的替换删除新增
 * @param string
 * @param start
 * @param deleteCount
 * @returns {string}
 */
function str_splice(string, start, deleteCount) {
        var result = '';
        for (let i = 0; i < string.length; i++) {
            if ((i < start || i >= start + deleteCount) && start < string.length) {
                if (i === start + deleteCount) {
                    for (let j = 3; j < arguments.length; j++) {
                        result += arguments[j];
                    }
                }
                result += string[i];
            }
        }
        if (start >= string.length) {
            for (let k = 3; k < arguments.length; k++) {
                string += arguments[k];
            }
            return string;
        }
        return result;
    }

var arr = [{
                data: 1,
                age: 2
            },
            {
                data: 3,
                age: 3
            },
            {
                data: 2,
                age: 1
            },
        ]
        var arr=[2,3,1];
        function sort(array, key, shunxu) {
            shuxing = String(key);
            for (var i = 0; i < array.length; i++) {
                for (var j = i + 1; j < array.length; j++) {
                    if (shunxu === true) {
                        if (array[i][key] > array[j][key]) {
                            var temp = array[i];
                            array[i] = array[j];
                            array[j] = temp;
                        }
                    } else if (shunxu === false) {
                        if (array[i][key] < array[j][key]) {
                            var temp = array[i];
                            array[i] = array[j];
                            array[j] = temp;
                        }
                    }

                }
            }
            return array
        }
        var res = sort(arr, 'age', true);
        console.log(res);
        console.log(arr);

/**
 * 颠倒数组
 * @param array
 * @returns {[]}
 */
function arr_reverse(array) {
    var result = [];
    for (var i = array.length - 1; i >= 0; i--) {
        result[result.length] = array[i];
    }
    return result;
}

/**
 * 从数组尾部删除元素
 * @param array
 * @returns {[]}
 */
function arr_pop(array) {
    var result = [];
    for (var i = 0; i < array.length - 1; i++) {
        result[result.length] = array[i];
    }
    array = result
    return result;
}

/**
 * 数组转化为字符串
 * @param array
 * @returns {string}
 */
function arr_toString(array) {
    var string = '';
    for (var i = 0; i < array.length; i++) {
        if (i < array.length - 1) {
            string += array[i] + ',';
        } else {
            string += array[i];
        }
    }
    return string
}

/**
 * 数组转化为字符串join()
 * @param array
 * @param key
 * @returns {string}
 */
function arr_join(array, key) {
    var string = '';
    for (var i = 0; i < array.length; i++) {
        if (i < array.length - 1) {
            string += array[i] + key;
        } else {
            string += array[i];
        }
    }
    return string
}

/**
 * 截取片段
 * @param array
 * @param start
 * @param end
 * @returns {[]}
 */
function arr_slice(array, start, end) {
    if (!Array.isArray(array)) {
        throw new Error('parms1 must be array');
    }
    if (typeof start !== 'number') {
        throw new Error('parms2 must be number');
    }
    if (typeof end !== "undefined") {
        if(typeof end !="number")
        throw new Error('parms3 must be number  or undefined ');
    }
    // if (typeof end !=='undefined') {
    //     throw new Error('parms3 must be number  or undefined ');
    // }
    var result = [];
    for (var i = start; i < array.length; i++) {
        if (end > i || end === undefined) {
            result[result.length] = array[i];
        }
    }
    return result;
}

/**
 * 遍历数组
 * @param arr
 * @param callback
 */
function arr_forEach(arr,callback) {
    if(!Array.isArray(arr)){throw new Error('param1 must be an array')}
    if(typeof callback !=='function'){throw new Error('param2 must be an array')}
    for(let i=0;i<arr.length;i++){
        callback(arr[i],i,arr);
    }
}

/**
 * 筛选数组
 * @param arr
 * @param callback
 * @returns {[]}
 */
function arr_filter(arr,callback) {
    if(!Array.isArray(arr)){throw new Error('param1 must be an array')};
    if(typeof callback !=='function'){throw new Error('param2 must be an array')};
    var res =[];
    for(let i=0;i<arr.length;i++){
        var result = callback(arr[i],i,arr);
        if(result){
            res[res.length]=arr[i];
        }
    }
    return res;
}

/**
 * //模拟str.substr()
 * @param string
 * @param startIndex
 * @param length
 * @returns {string}
 */
// function str_substr(string,startIndex,length) {
//     var result = '';
//     for (let i = 0; i < length; i++) {
//         result+=string[startIndex+i];
//     }
//     return result
// }
function str_substr(string,startIndex,length) {
    var result = '';
    for (let i = 0; i < string.length; i++) {
        if(i>=startIndex&&i<startIndex+length){
            result+=string[i];
        }
    }
    return result
}


/**
 * 颠倒字符串
 * @param str
 * @returns {string}
 */
function rev(str) {
    var res = ''
    for (var i = str.length-1; i >=0; i--) {
        res+=(str[i]);
    }
    return res;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值