zoukankan      html  css  js  c++  java
  • commonJS — 数组操作(for Array)

    for Array

    github: https://github.com/laixiangran/commonJS/blob/master/src/forArray.js

    代码

    /**
     * Created by laixiangran on 2016/1/24
     * homepage:http://www.cnblogs.com/laixiangran/
     * for Array
     */
    
    (function(undefined) {
    
        var com = window.COM = window.COM || {};
    
        com.$A = (function() {
            var ret = {
                isArray: function(obj) {
                    if (Array.isArray) {
                        return Array.isArray(obj);
                    } else {
                        return Object.prototype.toString.call(obj) === "[object Array]";
                    }
                },
                indexOf: function(array, item, from) {
                    if (array.indexOf) {
                        return isNaN(from) ? array.indexOf(item) : array.indexOf(item, from);
                    } else {
                        var len = array.length;
                        from = isNaN(from) ? 0 :
                            from < 0 ? Math.ceil(from) + len : Math.floor(from);
                        for (; from < len; from++ ) {
                            if ( array[from] === item ) {
                                return from;
                            }
                        }
                        return -1;
                    }
                },
                lastIndexOf: function(array, item, from) {
                    if (array.lastIndexOf) {
                        return isNaN(from) ? array.lastIndexOf(item) : array.lastIndexOf(item, from);
                    } else {
                        var len = array.length;
                        from = isNaN(from) || from >= len - 1 ? len - 1 :
                            from < 0 ? Math.ceil(from) + len : Math.floor(from);
                        for (; from > -1; from-- ) {
                            if ( array[from] === item ) {
                                return from;
                            }
                        }
                        return -1;
                    }
                }
            };
    
            function each(object, callback) {
                if (undefined === object.length) {
                    for (var name in object) {
                        if (object.hasOwnProperty(name)) {
                            if (false === callback(object[name], name, object)) {
                                break;
                            }
                        }
                    }
                } else {
                    for (var i = 0, len = object.length; i < len; i++) {
                        if (i in object) {
                            if (false === callback(object[i], i, object)) {
                                break;
                            }
                        }
                    }
                }
            }
    
            each({
                forEach: function(object, callback, thisp) {
                    each(object, function() {
                        callback.apply(thisp, arguments);
                    });
                },
                map: function(object, callback, thisp) {
                    var arr = [];
                    each(object, function() {
                        arr.push(callback.apply(thisp, arguments));
                    });
                    return arr;
                },
                filter: function(object, callback, thisp) {
                    var arr = [];
                    each(object, function(item) {
                        callback.apply(thisp, arguments) && arr.push(item);
                    });
                    return arr;
                },
                every: function(object, callback, thisp) {
                    var flag = true;
                    each(object, function() {
                        if (!callback.apply(thisp, arguments)) {
                            flag = false;
                            return false;
                        }
                    });
                    return flag;
                },
                some: function(object, callback, thisp) {
                    var flag = false;
                    each(object, function() {
                        if (callback.apply(thisp, arguments)) {
                            flag = true;
                            return false;
                        }
                    });
                    return flag;
                }
            }, function(method, name) {
                ret[name] = function(object, callback, thisp) {
                    if (object[name]) {
                        return object[name](callback, thisp);
                    } else {
                        return method(object, callback, thisp);
                    }
                }
            });
    
            return ret;
        }());
    }());
    

    参考

    http://www.cnblogs.com/cloudgamer/

  • 相关阅读:
    pureftp 超时 mlsd
    安卓相机调用适配
    解决多个界面重复共用同一组数据导致数据同步改变(实现数据的完全深拷贝)
    PHP反射API的使用、体会、说明
    c冒泡排序
    iOS开发常用的第三方类库
    修改按钮上图片的大小-iOS
    获取手机通讯录--ios
    根据搜素的字符串改变label包含该字符串的文字
    cell点击按钮崩的一种情况
  • 原文地址:https://www.cnblogs.com/laixiangran/p/5174761.html
Copyright © 2011-2022 走看看