underscorejs工具包

2018-02-27 10:52:23来源:oschina作者:莫西摩西人点击

分享
/**
* Created by ZHAN on 2017/8/10.
*/
// Underscore.js 1.7.0
// http://underscorejs.org
// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
(function () {
var n = this, t = n._, r = Array.prototype, e = Object.prototype, u = Function.prototype, i = r.push, a = r.slice,
o = r.concat, l = e.toString, c = e.hasOwnProperty, f = Array.isArray, s = Object.keys, p = u.bind,
h = function (n) {
return n instanceof h ? n : this instanceof h ? void(this._wrapped = n) : new h(n)
};
"undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = h), exports._ = h) : n._ = h, h.VERSION = "1.7.0";
var g = function (n, t, r) {
if (t === void 0)return n;
switch (null == r ? 3 : r) {
case 1:
return function (r) {
return n.call(t, r)
};
case 2:
return function (r, e) {
return n.call(t, r, e)
};
case 3:
return function (r, e, u) {
return n.call(t, r, e, u)
};
case 4:
return function (r, e, u, i) {
return n.call(t, r, e, u, i)
}
}
return function () {
return n.apply(t, arguments)
}
};
h.iteratee = function (n, t, r) {
return null == n ? h.identity : h.isFunction(n) ? g(n, t, r) : h.isObject(n) ? h.matches(n) : h.property(n)
}, h.each = h.forEach = function (n, t, r) {
if (null == n)return n;
t = g(t, r);
var e, u = n.length;
if (u === +u)for (e = 0; u > e; e++)t(n[e], e, n); else {
var i = h.keys(n);
for (e = 0, u = i.length; u > e; e++)t(n[i[e]], i[e], n)
}
return n
}, h.map = h.collect = function (n, t, r) {
if (null == n)return [];
t = h.iteratee(t, r);
for (var e, u = n.length !== +n.length && h.keys(n), i = (u || n).length, a = Array(i), o = 0; i > o; o++)e = u ? u[o] : o, a[o] = t(n[e], e, n);
return a
};
var v = "Reduce of empty array with no initial value";
h.reduce = h.foldl = h.inject = function (n, t, r, e) {
null == n && (n = []), t = g(t, e, 4);
var u, i = n.length !== +n.length && h.keys(n), a = (i || n).length, o = 0;
if (arguments.length < 3) {
if (!a)throw new TypeError(v);
r = n[i ? i[o++] : o++]
}
for (; a > o; o++)u = i ? i[o] : o, r = t(r, n[u], u, n);
return r
}, h.reduceRight = h.foldr = function (n, t, r, e) {
null == n && (n = []), t = g(t, e, 4);
var u, i = n.length !== +n.length && h.keys(n), a = (i || n).length;
if (arguments.length < 3) {
if (!a)throw new TypeError(v);
r = n[i ? i[--a] : --a]
}
for (; a--;)u = i ? i[a] : a, r = t(r, n[u], u, n);
return r
}, h.find = h.detect = function (n, t, r) {
var e;
return t = h.iteratee(t, r), h.some(n, function (n, r, u) {
return t(n, r, u) ? (e = n, !0) : void 0
}), e
}, h.filter = h.select = function (n, t, r) {
var e = [];
return null == n ? e : (t = h.iteratee(t, r), h.each(n, function (n, r, u) {
t(n, r, u) && e.push(n)
}), e)
}, h.reject = function (n, t, r) {
return h.filter(n, h.negate(h.iteratee(t)), r)
}, h.every = h.all = function (n, t, r) {
if (null == n)return !0;
t = h.iteratee(t, r);
var e, u, i = n.length !== +n.length && h.keys(n), a = (i || n).length;
for (e = 0; a > e; e++)if (u = i ? i[e] : e, !t(n[u], u, n))return !1;
return !0
}, h.some = h.any = function (n, t, r) {
if (null == n)return !1;
t = h.iteratee(t, r);
var e, u, i = n.length !== +n.length && h.keys(n), a = (i || n).length;
for (e = 0; a > e; e++)if (u = i ? i[e] : e, t(n[u], u, n))return !0;
return !1
}, h.contains = h.include = function (n, t) {
return null == n ? !1 : (n.length !== +n.length && (n = h.values(n)), h.indexOf(n, t) >= 0)
}, h.invoke = function (n, t) {
var r = a.call(arguments, 2), e = h.isFunction(t);
return h.map(n, function (n) {
return (e ? t : n[t]).apply(n, r)
})
}, h.pluck = function (n, t) {
return h.map(n, h.property(t))
}, h.where = function (n, t) {
return h.filter(n, h.matches(t))
}, h.findWhere = function (n, t) {
return h.find(n, h.matches(t))
}, h.max = function (n, t, r) {
var e, u, i = -1 / 0, a = -1 / 0;
if (null == t && null != n) {
n = n.length === +n.length ? n : h.values(n);
for (var o = 0, l = n.length; l > o; o++)e = n[o], e > i && (i = e)
} else t = h.iteratee(t, r), h.each(n, function (n, r, e) {
u = t(n, r, e), (u > a || u === -1 / 0 && i === -1 / 0) && (i = n, a = u)
});
return i
}, h.min = function (n, t, r) {
var e, u, i = 1 / 0, a = 1 / 0;
if (null == t && null != n) {
n = n.length === +n.length ? n : h.values(n);
for (var o = 0, l = n.length; l > o; o++)e = n[o], i > e && (i = e)
} else t = h.iteratee(t, r), h.each(n, function (n, r, e) {
u = t(n, r, e), (a > u || 1 / 0 === u && 1 / 0 === i) && (i = n, a = u)
});
return i
}, h.shuffle = function (n) {
for (var t, r = n && n.length === +n.length ? n : h.values(n), e = r.length, u = Array(e), i = 0; e > i; i++)t = h.random(0, i), t !== i && (u[i] = u[t]), u[t] = r[i];
return u
}, h.sample = function (n, t, r) {
return null == t || r ? (n.length !== +n.length && (n = h.values(n)), n[h.random(n.length - 1)]) : h.shuffle(n).slice(0, Math.max(0, t))
}, h.sortBy = function (n, t, r) {
return t = h.iteratee(t, r), h.pluck(h.map(n, function (n, r, e) {
return {value: n, index: r, criteria: t(n, r, e)}
}).sort(function (n, t) {
var r = n.criteria, e = t.criteria;
if (r !== e) {
if (r > e || r === void 0)return 1;
if (e > r || e === void 0)return -1
}
return n.index - t.index
}), "value")
};
var m = function (n) {
return function (t, r, e) {
var u = {};
return r = h.iteratee(r, e), h.each(t, function (e, i) {
var a = r(e, i, t);
n(u, e, a)
}), u
}
};
h.groupBy = m(function (n, t, r) {
h.has(n, r) ? n[r].push(t) : n[r] = [t]
}), h.indexBy = m(function (n, t, r) {
n[r] = t
}), h.countBy = m(function (n, t, r) {
h.has(n, r) ? n[r]++ : n[r] = 1
}), h.sortedIndex = function (n, t, r, e) {
r = h.iteratee(r, e, 1);
for (var u = r(t), i = 0, a = n.length; a > i;) {
var o = i + a >>> 1;
r(n[o]) < u ? i = o + 1 : a = o
}
return i
}, h.toArray = function (n) {
return n ? h.isArray(n) ? a.call(n) : n.length === +n.length ? h.map(n, h.identity) : h.values(n) : []
}, h.size = function (n) {
return null == n ? 0 : n.length === +n.length ? n.length : h.keys(n).length
}, h.partition = function (n, t, r) {
t = h.iteratee(t, r);
var e = [], u = [];
return h.each(n, function (n, r, i) {
(t(n, r, i) ? e : u).push(n)
}), [e, u]
}, h.first = h.head = h.take = function (n, t, r) {
return null == n ? void 0 : null == t || r ? n[0] : 0 > t ? [] : a.call(n, 0, t)
}, h.initial = function (n, t, r) {
return a.call(n, 0, Math.max(0, n.length - (null == t || r ? 1 : t)))
}, h.last = function (n, t, r) {
return null == n ? void 0 : null == t || r ? n[n.length - 1] : a.call(n, Math.max(n.length - t, 0))
}, h.rest = h.tail = h.drop = function (n, t, r) {
return a.call(n, null == t || r ? 1 : t)
}, h.compact = function (n) {
return h.filter(n, h.identity)
};
var y = function (n, t, r, e) {
if (t && h.every(n, h.isArray))return o.apply(e, n);
for (var u = 0, a = n.length; a > u; u++) {
var l = n[u];
h.isArray(l) || h.isArguments(l) ? t ? i.apply(e, l) : y(l, t, r, e) : r || e.push(l)
}
return e
};
h.flatten = function (n, t) {
return y(n, t, !1, [])
}, h.without = function (n) {
return h.difference(n, a.call(arguments, 1))
}, h.uniq = h.unique = function (n, t, r, e) {
if (null == n)return [];
h.isBoolean(t) || (e = r, r = t, t = !1), null != r && (r = h.iteratee(r, e));
for (var u = [], i = [], a = 0, o = n.length; o > a; a++) {
var l = n[a];
if (t) a && i === l || u.push(l), i = l; else if (r) {
var c = r(l, a, n);
h.indexOf(i, c) < 0 && (i.push(c), u.push(l))
} else h.indexOf(u, l) < 0 && u.push(l)
}
return u
}, h.union = function () {
return h.uniq(y(arguments, !0, !0, []))
}, h.intersection = function (n) {
if (null == n)return [];
for (var t = [], r = arguments.length, e = 0, u = n.length; u > e; e++) {
var i = n[e];
if (!h.contains(t, i)) {
for (var a = 1; r > a && h.contains(arguments[a], i); a++);
a === r && t.push(i)
}
}
return t
}, h.difference = function (n) {
var t = y(a.call(arguments, 1), !0, !0, []);
return h.filter(n, function (n) {
return !h.contains(t, n)
})
}, h.zip = function (n) {
if (null == n)return [];
for (var t = h.max(arguments, "length").length, r = Array(t), e = 0; t > e; e++)r[e] = h.pluck(arguments, e);
return r
}, h.object = function (n, t) {
if (null == n)return {};
for (var r = {}, e = 0, u = n.length; u > e; e++)t ? r[n[e]] = t[e] : r[n[e][0]] = n[e][1];
return r
}, h.indexOf = function (n, t, r) {
if (null == n)return -1;
var e = 0, u = n.length;
if (r) {
if ("number" != typeof r)return e = h.sortedIndex(n, t), n[e] === t ? e : -1;
e = 0 > r ? Math.max(0, u + r) : r
}
for (; u > e; e++)if (n[e] === t)return e;
return -1
}, h.lastIndexOf = function (n, t, r) {
if (null == n)return -1;
var e = n.length;
for ("number" == typeof r && (e = 0 > r ? e + r + 1 : Math.min(e, r + 1)); --e >= 0;)if (n[e] === t)return e;
return -1
}, h.range = function (n, t, r) {
arguments.length <= 1 && (t = n || 0, n = 0), r = r || 1;
for (var e = Math.max(Math.ceil((t - n) / r), 0), u = Array(e), i = 0; e > i; i++, n += r)u[i] = n;
return u
};
var d = function () {
};
h.bind = function (n, t) {
var r, e;
if (p && n.bind === p)return p.apply(n, a.call(arguments, 1));
if (!h.isFunction(n))throw new TypeError("Bind must be called on a function");
return r = a.call(arguments, 2), e = function () {
if (!(this instanceof e))return n.apply(t, r.concat(a.call(arguments)));
d.prototype = n.prototype;
var u = new d;
d.prototype = null;
var i = n.apply(u, r.concat(a.call(arguments)));
return h.isObject(i) ? i : u
}
}, h.partial = function (n) {
var t = a.call(arguments, 1);
return function () {
for (var r = 0, e = t.slice(), u = 0, i = e.length; i > u; u++)e[u] === h && (e[u] = arguments[r++]);
for (; r < arguments.length;)e.push(arguments[r++]);
return n.apply(this, e)
}
}, h.bindAll = function (n) {
var t, r, e = arguments.length;
if (1 >= e)throw new Error("bindAll must be passed function names");
for (t = 1; e > t; t++)r = arguments[t], n[r] = h.bind(n[r], n);
return n
}, h.memoize = function (n, t) {
var r = function (e) {
var u = r.cache, i = t ? t.apply(this, arguments) : e;
return h.has(u, i) || (u[i] = n.apply(this, arguments)), u[i]
};
return r.cache = {}, r
}, h.delay = function (n, t) {
var r = a.call(arguments, 2);
return setTimeout(function () {
return n.apply(null, r)
}, t)
}, h.defer = function (n) {
return h.delay.apply(h, [n, 1].concat(a.call(arguments, 1)))
}, h.throttle = function (n, t, r) {
var e, u, i, a = null, o = 0;
r || (r = {});
var l = function () {
o = r.leading === !1 ? 0 : h.now(), a = null, i = n.apply(e, u), a || (e = u = null)
};
return function () {
var c = h.now();
o || r.leading !== !1 || (o = c);
var f = t - (c - o);
return e = this, u = arguments, 0 >= f || f > t ? (clearTimeout(a), a = null, o = c, i = n.apply(e, u), a || (e = u = null)) : a || r.trailing === !1 || (a = setTimeout(l, f)), i
}
}, h.debounce = function (n, t, r) {
var e, u, i, a, o, l = function () {
var c = h.now() - a;
t > c && c > 0 ? e = setTimeout(l, t - c) : (e = null, r || (o = n.apply(i, u), e || (i = u = null)))
};
return function () {
i = this, u = arguments, a = h.now();
var c = r && !e;
return e || (e = setTimeout(l, t)), c && (o = n.apply(i, u), i = u = null), o
}
}, h.wrap = function (n, t) {
return h.partial(t, n)
}, h.negate = function (n) {
return function () {
return !n.apply(this, arguments)
}
}, h.compose = function () {
var n = arguments, t = n.length - 1;
return function () {
for (var r = t, e = n[t].apply(this, arguments); r--;)e = n[r].call(this, e);
return e
}
}, h.after = function (n, t) {
return function () {
return --n < 1 ? t.apply(this, arguments) : void 0
}
}, h.before = function (n, t) {
var r;
return function () {
return --n > 0 ? r = t.apply(this, arguments) : t = null, r
}
}, h.once = h.partial(h.before, 2), h.keys = function (n) {
if (!h.isObject(n))return [];
if (s)return s(n);
var t = [];
for (var r in n)h.has(n, r) && t.push(r);
return t
}, h.values = function (n) {
for (var t = h.keys(n), r = t.length, e = Array(r), u = 0; r > u; u++)e[u] = n[t[u]];
return e
}, h.pairs = function (n) {
for (var t = h.keys(n), r = t.length, e = Array(r), u = 0; r > u; u++)e[u] = [t[u], n[t[u]]];
return e
}, h.invert = function (n) {
for (var t = {}, r = h.keys(n), e = 0, u = r.length; u > e; e++)t[n[r[e]]] = r[e];
return t
}, h.functions = h.methods = function (n) {
var t = [];
for (var r in n)h.isFunction(n[r]) && t.push(r);
return t.sort()
}, h.extend = function (n) {
if (!h.isObject(n))return n;
for (var t, r, e = 1, u = arguments.length; u > e; e++) {
t = arguments[e];
for (r in t)c.call(t, r) && (n[r] = t[r])
}
return n
}, h.pick = function (n, t, r) {
var e, u = {};
if (null == n)return u;
if (h.isFunction(t)) {
t = g(t, r);
for (e in n) {
var i = n[e];
t(i, e, n) && (u[e] = i)
}
} else {
var l = o.apply([], a.call(arguments, 1));
n = new Object(n);
for (var c = 0, f = l.length; f > c; c++)e = l[c], e in n && (u[e] = n[e])
}
return u
}, h.omit = function (n, t, r) {
if (h.isFunction(t)) t = h.negate(t); else {
var e = h.map(o.apply([], a.call(arguments, 1)), String);
t = function (n, t) {
return !h.contains(e, t)
}
}
return h.pick(n, t, r)
}, h.defaults = function (n) {
if (!h.isObject(n))return n;
for (var t = 1, r = arguments.length; r > t; t++) {
var e = arguments[t];
for (var u in e)n[u] === void 0 && (n[u] = e[u])
}
return n
}, h.clone = function (n) {
return h.isObject(n) ? h.isArray(n) ? n.slice() : h.extend({}, n) : n
}, h.tap = function (n, t) {
return t(n), n
};
var b = function (n, t, r, e) {
if (n === t)return 0 !== n || 1 / n === 1 / t;
if (null == n || null == t)return n === t;
n instanceof h && (n = n._wrapped), t instanceof h && (t = t._wrapped);
var u = l.call(n);
if (u !== l.call(t))return !1;
switch (u) {
case"[object RegExp]":
case"[object String]":
return "" + n == "" + t;
case"[object Number]":
return +n !== +n ? +t !== +t : 0 === +n ? 1 / +n === 1 / t : +n === +t;
case"[object Date]":
case"[object Boolean]":
return +n === +t
}
if ("object" != typeof n || "object" != typeof t)return !1;
for (var i = r.length; i--;)if (r[i] === n)return e[i] === t;
var a = n.constructor, o = t.constructor;
if (a !== o && "constructor" in n && "constructor" in t && !(h.isFunction(a) && a instanceof a && h.isFunction(o) && o instanceof o))return !1;
r.push(n), e.push(t);
var c, f;
if ("[object Array]" === u) {
if (c = n.length, f = c === t.length)for (; c-- && (f = b(n[c], t[c], r, e)););
} else {
var s, p = h.keys(n);
if (c = p.length, f = h.keys(t).length === c)for (; c-- && (s = p[c], f = h.has(t, s) && b(n[s], t[s], r, e)););
}
return r.pop(), e.pop(), f
};
h.isEqual = function (n, t) {
return b(n, t, [], [])
}, h.isEmpty = function (n) {
if (null == n)return !0;
if (h.isArray(n) || h.isString(n) || h.isArguments(n))return 0 === n.length;
for (var t in n)if (h.has(n, t))return !1;
return !0
}, h.isElement = function (n) {
return !(!n || 1 !== n.nodeType)
}, h.isArray = f || function (n) {
return "[object Array]" === l.call(n)
}, h.isObject = function (n) {
var t = typeof n;
return "function" === t || "object" === t && !!n
}, h.each(["Arguments", "Function", "String", "Number", "Date", "RegExp"], function (n) {
h["is" + n] = function (t) {
return l.call(t) === "[object " + n + "]"
}
}), h.isArguments(arguments) || (h.isArguments = function (n) {
return h.has(n, "callee")
}), "function" != typeof/./ && (h.isFunction = function (n) {
return "function" == typeof n || !1
}), h.isFinite = function (n) {
return isFinite(n) && !isNaN(parseFloat(n))
}, h.isNaN = function (n) {
return h.isNumber(n) && n !== +n
}, h.isBoolean = function (n) {
return n === !0 || n === !1 || "[object Boolean]" === l.call(n)
}, h.isNull = function (n) {
return null === n
}, h.isUndefined = function (n) {
return n === void 0
}, h.has = function (n, t) {
return null != n && c.call(n, t)
}, h.noConflict = function () {
return n._ = t, this
}, h.identity = function (n) {
return n
}, h.constant = function (n) {
return function () {
return n
}
}, h.noop = function () {
}, h.property = function (n) {
return function (t) {
return t[n]
}
}, h.matches = function (n) {
var t = h.pairs(n), r = t.length;
return function (n) {
if (null == n)return !r;
n = new Object(n);
for (var e = 0; r > e; e++) {
var u = t[e], i = u[0];
if (u[1] !== n[i] || !(i in n))return !1
}
return !0
}
}, h.times = function (n, t, r) {
var e = Array(Math.max(0, n));
t = g(t, r, 1);
for (var u = 0; n > u; u++)e[u] = t(u);
return e
}, h.random = function (n, t) {
return null == t && (t = n, n = 0), n + Math.floor(Math.random() * (t - n + 1))
}, h.now = Date.now || function () {
return (new Date).getTime()
};
var _ = {"&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`"}, w = h.invert(_),
j = function (n) {
var t = function (t) {
return n[t]
}, r = "(?:" + h.keys(n).join("|") + ")", e = RegExp(r), u = RegExp(r, "g");
return function (n) {
return n = null == n ? "" : "" + n, e.test(n) ? n.replace(u, t) : n
}
};
h.escape = j(_), h.unescape = j(w), h.result = function (n, t) {
if (null == n)return void 0;
var r = n[t];
return h.isFunction(r) ? n[t]() : r
};
var x = 0;
h.uniqueId = function (n) {
var t = ++x + "";
return n ? n + t : t
}, h.templateSettings = {evaluate: /<%([/s/S]+?)%>/g, interpolate: /<%=([/s/S]+?)%>/g, escape: /<%-([/s/S]+?)%>/g};
var A = /(.)^/, k = {"'": "'", "//": "//", "/r": "r", "/n": "n", "/u2028": "u2028", "/u2029": "u2029"},
O = ///|'|/r|/n|/u2028|/u2029/g, F = function (n) {
return "//" + k[n]
};
h.template = function (n, t, r) {
!t && r && (t = r), t = h.defaults({}, t, h.templateSettings);
var e = RegExp([(t.escape || A).source, (t.interpolate || A).source, (t.evaluate || A).source].join("|") + "|$", "g"),
u = 0, i = "__p+='";
n.replace(e, function (t, r, e, a, o) {
return i += n.slice(u, o).replace(O, F), u = o + t.length, r ? i += "'+/n((__t=(" + r + "))==null?'':_.escape(__t))+/n'" : e ? i += "'+/n((__t=(" + e + "))==null?'':__t)+/n'" : a && (i += "';/n" + a + "/n__p+='"), t
}), i += "';/n", t.variable || (i = "with(obj||{}){/n" + i + "}/n"), i = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};/n" + i + "return __p;/n";
try {
var a = new Function(t.variable || "obj", "_", i)
} catch (o) {
throw o.source = i, o
}
var l = function (n) {
return a.call(this, n, h)
}, c = t.variable || "obj";
return l.source = "function(" + c + "){/n" + i + "}", l
}, h.chain = function (n) {
var t = h(n);
return t._chain = !0, t
};
var E = function (n) {
return this._chain ? h(n).chain() : n
};
h.mixin = function (n) {
h.each(h.functions(n), function (t) {
var r = h[t] = n[t];
h.prototype[t] = function () {
var n = [this._wrapped];
return i.apply(n, arguments), E.call(this, r.apply(h, n))
}
})
}, h.mixin(h), h.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function (n) {
var t = r[n];
h.prototype[n] = function () {
var r = this._wrapped;
return t.apply(r, arguments), "shift" !== n && "splice" !== n || 0 !== r.length || delete r[0], E.call(this, r)
}
}), h.each(["concat", "join", "slice"], function (n) {
var t = r[n];
h.prototype[n] = function () {
return E.call(this, t.apply(this._wrapped, arguments))
}
}), h.prototype.value = function () {
return this._wrapped
}, "function" == typeof define && define.amd && define("underscore", [], function () {
return h
})
}).call(this);
//# sourceMappingURL=underscore-min.map

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台