diff --git a/dist/lodash.compat.js b/dist/lodash.compat.js index e955db4b9..45a1c83bd 100644 --- a/dist/lodash.compat.js +++ b/dist/lodash.compat.js @@ -557,7 +557,7 @@ * @memberOf _ * @category Utilities * @param {Object} [context=root] The context object. - * @returns {Function} Returns the `lodash` function. + * @returns {Function} Returns a new `lodash` function. */ function runInContext(context) { // Avoid issues with some ES3 environments that attempt to use values, named @@ -6933,6 +6933,9 @@ // property containing a primitive value if (props.length == 1 && a === a && !isObject(a)) { return function(object) { + if (!hasOwnProperty.call(object, key)) { + return false; + } var b = object[key]; return a === b && (a !== 0 || (1 / a == 1 / b)); }; @@ -6942,7 +6945,9 @@ result = false; while (length--) { - if (!(result = baseIsEqual(object[props[length]], source[props[length]], null, true))) { + var key = props[length]; + if (!(result = hasOwnProperty.call(object, key) && + baseIsEqual(object[key], source[key], null, true))) { break; } } diff --git a/dist/lodash.compat.min.js b/dist/lodash.compat.min.js index bf6956091..b0e651654 100644 --- a/dist/lodash.compat.min.js +++ b/dist/lodash.compat.min.js @@ -33,8 +33,8 @@ if(t=u.createCallback(t,e,4),me(n)){var a=-1,i=n.length;for(o&&i&&(r=n[++a]);++a return function(){if(o=arguments,l=xe(),f=this,p=h&&(c||!v),false===g)var r=v&&!c;else{a||v||(s=l);var y=g-(l-s),m=0>=y;m?(a&&(a=Pr(a)),s=l,i=n.apply(f,o)):a||(a=zr(e,y))}return m&&c?c=Pr(c):c||t===g||(c=zr(u,t)),r&&(m=true,i=n.apply(f,o)),!m||c||a||(o=f=null),i}}function Zt(n,t,r){var e=arguments,u=0,o=e.length,a=typeof r;if("number"!=a&&"string"!=a||!e[3]||e[3][r]!==t||(o=2),3=A&&(o=r,e=oe(e));++uo(e,f)&&a.push(f)}return a}function ht(n,t){var r=-1,e=n?n.length:0;if(typeof e=="number")for(;++r=A,l=[];if(f)var s=oe(),i=r;else s=u?c():l;for(;++oi(s,h))&&((u||f)&&s.push(h),l.push(g))}return!f&&u&&p(s),l}function jt(n){return function(t,r,e){var u={};r=y.createCallback(r,e,3),e=-1;var o=t?t.length:0;if(typeof o=="number")for(;++er&&(r=0),e=[n,t,r,e,u,o],t==w||t==(w|C)?S(e):pt(e))}function xt(){var n=(n=y.indexOf)===Et?t:n; +n[o]=l})}function _t(n,t){return n+Ir(Yr()*(t-n+1))}function wt(n,e,u){var o=-1,i=xt(),a=n?n.length:0,f=oe&&!e&&i===t&&a>=A,l=[];if(f)var s=oe(),i=r;else s=u?c():l;for(;++oi(s,h))&&((u||f)&&s.push(h),l.push(g))}return!f&&u&&p(s),l}function kt(n){return function(t,r,e){var u={};r=y.createCallback(r,e,3),e=-1;var o=t?t.length:0;if(typeof o=="number")for(;++er&&(r=0),e=[n,t,r,e,u,o],t==w||t==(w|C)?S(e):pt(e))}function xt(){var n=(n=y.indexOf)===Et?t:n; return n}function Ct(n){return typeof n=="function"&&Er.test(Tr.call(n))}function Ot(n){var t,r;return n&&Sr.call(n)==et&&($r.call(n,"constructor")||(t=n.constructor,!rr(t)||t instanceof t))?(o(n,function(n,t){r=t}),typeof r=="undefined"||$r.call(n,r)):false}function At(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Sr.call(n)==Q||false}function St(n,t,r){var e=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=y.createCallback(t,r,3);++oe?Gr(0,u+e):e||0;else if(e)return e=It(n,r),u&&n[e]===r?e:-1;return t(n,r,e)}function Nt(n,t,r){if(typeof t!="number"&&null!=t){var e=0,u=-1,o=n?n.length:0;for(t=y.createCallback(t,r,3);++ut?t=Gr(u+t,0):t>u&&(t=u),typeof r=="undefined"?r=u:0>r?r=Gr(u+r,0):r>u&&(r=u),u=r-t||0,r=gr(u);++e>>1,r(n[e])r?0:r);++to&&(o=a)}else t=null==t&&or(n)?e:y.createCallback(t,r,3),ht(n,function(n,r,e){r=t(n,r,e),r>u&&(u=r,o=n)});return o}function Ut(n,t,r,e){var u=3>arguments.length;t=y.createCallback(t,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number")for(u&&i&&(r=n[++o]);++oarguments.length;return t=y.createCallback(t,e,4),Pt(n,function(n,e,o){r=u?(u=false,n):t(r,n,e,o)}),r}function Xt(n){var t=-1,r=n?n.length:0,e=gr(typeof r=="number"?r:0); -return ht(n,function(n){var r=_t(0,++t);e[t]=e[r],e[r]=n}),e}function Gt(n,t,r){var e;t=y.createCallback(t,r,3),r=-1;var u=n?n.length:0;if(typeof u=="number")for(;++rarguments.length)return kt(n,w,null,t);var r=n&&(n[N]?n[N][2]:n.length),e=Rt(arguments,2),r=r-e.length;return kt(n,w|C,r,t,e)}function Jt(n,t,r){function e(){c&&Rr(c),i=c=p=_,(h||g!==t)&&(s=me(),a=n.apply(l,o),c||i||(o=l=null))}function u(){var r=t-(me()-f); -0=y;m?(i&&(i=Rr(i)),s=f,a=n.apply(l,o)):i||(i=qr(e,y))}return m&&c?c=Rr(c):c||t===g||(c=qr(u,t)),r&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a +return ht(n,function(n){var r=_t(0,++t);e[t]=e[r],e[r]=n}),e}function Gt(n,t,r){var e;t=y.createCallback(t,r,3),r=-1;var u=n?n.length:0;if(typeof u=="number")for(;++rarguments.length)return jt(n,w,null,t);var r=n&&(n[N]?n[N][2]:n.length),e=Rt(arguments,2),r=r-e.length;return jt(n,w|C,r,t,e)}function Jt(n,t,r){function e(){c&&Rr(c),i=c=p=_,(h||g!==t)&&(s=me(),a=n.apply(l,o),c||i||(o=l=null))}function u(){var r=t-(me()-f); +0=y;m?(i&&(i=Rr(i)),s=f,a=n.apply(l,o)):i||(i=qr(e,y))}return m&&c?c=Rr(c):c||t===g||(c=qr(u,t)),r&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a }}function Qt(n,t,r){var e=arguments,u=0,o=e.length,i=typeof r;if("number"!=i&&"string"!=i||!e[3]||e[3][r]!==t||(o=2),3--n?t.apply(this,arguments):void 0}},y.assign=Qt,y.at=function(n,t){var r=arguments,e=-1,u=vt(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=gr(o);++earguments.length?kt(t,w|j,null,n):kt(t,w|j|C,null,n,Rt(arguments,2))},y.chain=function(n){return n=new m(n),n.__chain__=true,n},y.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t--n?t.apply(this,arguments):void 0}},y.assign=Qt,y.at=function(n,t){var r=arguments,e=-1,u=vt(r,true,false,1),o=u.length,i=typeof t;for("number"!=i&&"string"!=i||!r[2]||r[2][t]!==n||(o=1),r=gr(o);++earguments.length?jt(t,w|k,null,n):jt(t,w|k|C,null,n,Rt(arguments,2))},y.chain=function(n){return n=new m(n),n.__chain__=true,n},y.compact=function(n){for(var t=-1,r=n?n.length:0,e=0,u=[];++t=A&&oe(e?n[e]:f)))}var a=n[0],s=-1,g=a?a.length:0,h=[];n:for(;++s(v?r(v,l):i(f,l))){for(e=u,(v||f).push(l);--e;)if(v=o[e],0>(v?r(v,l):i(n[e],l)))continue n;h.push(l) }}return p(o),p(f),h},y.invert=function(n,t){for(var r=-1,e=ge(n),u=e.length,o={};++rn.indexOf(";")?n:n.replace($,d))},y.uniqueId=function(n){var t=++R;return wr(null==n?"":n)+t},y.all=qt,y.any=Gt,y.detect=zt,y.findWhere=zt,y.foldl=Ut,y.foldr=Vt,y.include=Dt,y.inject=Ut,cr(function(){var n={};return mt(y,function(t,r){y.prototype[r]||(n[r]=t)}),n}(),false),y.first=St,y.last=function(n,t,r){var e=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u; for(t=y.createCallback(t,r,3);o--&&t(n[o],o,n);)e++}else if(e=t,null==e||r)return n?n[u-1]:_;return e=u-e,Rt(n,0"']/g,D=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,z=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,L=/\w*$/,P=/^\s*function[ \n\r\t]+\w/,K=/^0[xX]/,M=/($^)/,U=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/g,X=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",G=[],H=[],J="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Q="[object Arguments]",Y="[object Array]",Z="[object Boolean]",nt="[object Date]",tt="[object Function]",rt="[object Number]",et="[object Object]",ut="[object RegExp]",ot="[object String]",it={}; +},y.prototype.toString=function(){return wr(this.__wrapped__)},y.prototype.value=Bt,y.prototype.valueOf=Bt,ht(["join","pop","shift"],function(n){var t=jr[n];y.prototype[n]=function(){var n=this.__chain__,r=t.apply(this.__wrapped__,arguments);return n?new m(r,n):r}}),ht(["push","reverse","sort","unshift"],function(n){var t=jr[n];y.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),ht(["concat","splice"],function(n){var t=jr[n];y.prototype[n]=function(){return new m(t.apply(this.__wrapped__,arguments),this.__chain__) +}}),y}var _,w=1,k=2,j=4,x=8,C=16,O=32,A=75,S=40,E="2.4.1",N="__lodash@"+E+"__",R=0,I=/\b__p\+='';/g,T=/\b(__p\+=)''\+/g,F=/(__e\(.*?\)|\b__t\))\+'';/g,$=/&(?:amp|lt|gt|quot|#39);/g,B=/[&<>"']/g,D=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,W=/<%=([\s\S]+?)%>/g,z=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,L=/\w*$/,P=/^\s*function[ \n\r\t]+\w/,K=/^0[xX]/,M=/($^)/,U=/\bthis\b/,V=/['\n\r\t\u2028\u2029\\]/g,X=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",G=[],H=[],J="Array Boolean Date Function Math Number Object RegExp Set String _ clearTimeout document isFinite isNaN parseInt setTimeout TypeError window WinRTError".split(" "),Q="[object Arguments]",Y="[object Array]",Z="[object Boolean]",nt="[object Date]",tt="[object Function]",rt="[object Number]",et="[object Object]",ut="[object RegExp]",ot="[object String]",it={}; it[tt]=false,it[Q]=it[Y]=it[Z]=it[nt]=it[rt]=it[et]=it[ut]=it[ot]=true;var at={leading:false,maxWait:0,trailing:false},ft={configurable:false,enumerable:false,value:null,writable:false},lt={"&":"&","<":"<",">":">",'"':""","'":"'"},ct={"&":"&","<":"<",">":">",""":'"',"'":"'"},pt={"function":true,object:true},st={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},gt=pt[typeof window]&&window||this,ht=pt[typeof exports]&&exports&&!exports.nodeType&&exports,pt=pt[typeof module]&&module&&!module.nodeType&&module,vt=ht&&pt&&typeof global=="object"&&global; !vt||vt.global!==vt&&vt.window!==vt&&vt.self!==vt||(gt=vt);var vt=pt&&pt.exports===ht&&ht,yt=b();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(gt._=yt, define(function(){return yt})):ht&&pt?vt?(pt.exports=yt)._=yt:ht._=yt:gt._=yt}).call(this); \ No newline at end of file diff --git a/dist/lodash.underscore.js b/dist/lodash.underscore.js index e3802019f..3b2335662 100644 --- a/dist/lodash.underscore.js +++ b/dist/lodash.underscore.js @@ -4682,7 +4682,9 @@ result = false; while (length--) { - if (!(result = object[props[length]] === source[props[length]])) { + var key = props[length]; + if (!(result = hasOwnProperty.call(object, key) && + baseIsEqual(object[key], source[key], null, true))) { break; } } diff --git a/dist/lodash.underscore.min.js b/dist/lodash.underscore.min.js index 7bb528955..6ba025254 100644 --- a/dist/lodash.underscore.min.js +++ b/dist/lodash.underscore.min.js @@ -7,31 +7,31 @@ }function a(n,r){this.__chain__=!!r,this.__wrapped__=n}function l(n){function r(){if(u){var n=E(u);Vr.apply(n,arguments)}if(this instanceof r){var o=c(t.prototype),n=t.apply(o,n||arguments);return L(n)?n:o}return t.apply(e,n||arguments)}var t=n[0],e=n[3],u=n[4];return r}function c(n){return L(n)?Jr(n):{}}function p(n,r,t){if(typeof n!="function")return nr;if(typeof r=="undefined"||!("prototype"in n))return n;switch(t){case 1:return function(t){return n.call(r,t)};case 2:return function(t,e){return n.call(r,t,e) };case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return P(n,r)}function s(n){function r(){var n=a?o:this;if(i){var v=E(i);Vr.apply(v,arguments)}if(f||p){v||(v=E(arguments)),f&&Vr.apply(v,f);var y=arguments.length;if(p&&ye(r,i)&&o.push(i)}return o}function h(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(;++tu(f,l))&&(t&&f.push(l),i.push(a))}return i}function _(n){return function(r,t,e){var u={};t=Z(t,e,3),e=-1;var o=r?r.length:0;if(typeof o=="number")for(;++et&&(t=0),n=[n,r,t,e,u,o],r==or||r==(or|lr)?l(n):s(n) -}function d(){var n=(n=f.indexOf)===T?t:n;return n}function w(n){return typeof n=="function"&&Wr.test(Pr.call(n))}function j(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Dr.call(n)==_r||false}function x(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=-1;for(r=Z(r,t,3);++oe?Yr(0,u+e):e||0;else if(e)return e=O(n,r),u&&n[e]===r?e:-1; +});return e.pop(),u.pop(),c}function m(n,r,t){for(var e=-1,u=d(),o=n?n.length:0,i=[],f=t?[]:i;++eu(f,l))&&(t&&f.push(l),i.push(a))}return i}function b(n){return function(r,t,e){var u={};t=Z(t,e,3),e=-1;var o=r?r.length:0;if(typeof o=="number")for(;++et&&(t=0),n=[n,r,t,e,u,o],r==or||r==(or|lr)?l(n):s(n) +}function d(){var n=(n=f.indexOf)===T?t:n;return n}function w(n){return typeof n=="function"&&Wr.test(Pr.call(n))}function j(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Dr.call(n)==br||false}function x(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=-1;for(r=Z(r,t,3);++oe?Yr(0,u+e):e||0;else if(e)return e=O(n,r),u&&n[e]===r?e:-1; return t(n,r,e)}function A(n,r,t){if(typeof r!="number"&&null!=r){var e=0,u=-1,o=n?n.length:0;for(r=Z(r,t,3);++ur?r=Yr(u+r,0):r>u&&(r=u),typeof t=="undefined"?t=u:0>t?t=Yr(u+t,0):t>u&&(t=u),u=t-r||0,t=Array(u);++e>>1,t(n[e])u&&(u=t);else r=Z(r,t,3),h(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function M(n,r,t,e){var u=3>arguments.length; r=Z(r,e,4);var o=-1,i=n?n.length:0;if(typeof i=="number")for(u&&i&&(t=n[++o]);++oarguments.length;return r=Z(r,e,4),R(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)}),t}function W(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return h(n,function(n){var t;t=++r,t=0+Cr(rt()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function z(n,r,t){var e;r=Z(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++targuments.length)return b(n,or,null,r);var t=n&&(n[pr]?n[pr][2]:n.length),e=E(arguments,2),t=t-e.length;return b(n,or|lr,t,r,e)}function U(n,r,t){function e(){c&&clearTimeout(c),i=c=p=ur,(h||g!==r)&&(s=lt(),f=n.apply(l,o),c||i||(o=l=null))}function u(){var t=r-(lt()-a);0arguments.length)return _(n,or,null,r);var t=n&&(n[pr]?n[pr][2]:n.length),e=E(arguments,2),t=t-e.length;return _(n,or|lr,t,r,e)}function U(n,r,t){function e(){c&&clearTimeout(c),i=c=p=ur,(h||g!==r)&&(s=lt(),f=n.apply(l,o),c||i||(o=l=null))}function u(){var t=r-(lt()-a);0=y;m?(i&&(i=clearTimeout(i)),s=a,f=n.apply(l,o)):i||(i=setTimeout(e,y))}return m&&c?c=clearTimeout(c):c||r===g||(c=setTimeout(u,r)),t&&(m=true,f=n.apply(l,o)),!m||c||i||(o=l=null),f}}function V(n,r,t){if(!n)return n;var e=arguments,u=0,o=e.length,i=typeof t;for("number"!=i&&"string"!=i||!e[3]||e[3][t]!==r||(o=2);++u"']/g,yr=/($^)/,mr=/['\n\r\t\u2028\u2029\\]/g,_r="[object Arguments]",br="[object Array]",dr="[object Boolean]",wr="[object Date]",jr="[object Number]",xr="[object Object]",Tr="[object RegExp]",Ar="[object String]",Er={"&":"&","<":"<",">":">",'"':""","'":"'"},Or={"&":"&","<":"<",">":">",""":'"',"'":"'"},Sr={"function":true,object:true},kr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Nr=Sr[typeof window]&&window||this,qr=Sr[typeof exports]&&exports&&!exports.nodeType&&exports,Fr=Sr[typeof module]&&module&&!module.nodeType&&module,Br=qr&&Fr&&typeof global=="object"&&global; +}function Q(n){var r=typeof n;return"number"==r||n&&"object"==r&&Dr.call(n)==jr||false}function X(n){return typeof n=="string"||n&&typeof n=="object"&&Dr.call(n)==Ar||false}function Y(n){for(var r=-1,t=at(n),e=t.length,u=Array(e);++r"']/g,yr=/($^)/,mr=/['\n\r\t\u2028\u2029\\]/g,br="[object Arguments]",_r="[object Array]",dr="[object Boolean]",wr="[object Date]",jr="[object Number]",xr="[object Object]",Tr="[object RegExp]",Ar="[object String]",Er={"&":"&","<":"<",">":">",'"':""","'":"'"},Or={"&":"&","<":"<",">":">",""":'"',"'":"'"},Sr={"function":true,object:true},kr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Nr=Sr[typeof window]&&window||this,qr=Sr[typeof exports]&&exports&&!exports.nodeType&&exports,Fr=Sr[typeof module]&&module&&!module.nodeType&&module,Br=qr&&Fr&&typeof global=="object"&&global; !Br||Br.global!==Br&&Br.window!==Br&&Br.self!==Br||(Nr=Br);var Rr=Fr&&Fr.exports===qr&&qr,$r=Array.prototype,Ir=Object.prototype,Mr=Nr._,Dr=Ir.toString,Wr=RegExp("^"+(Dr+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),zr=Math.ceil,Cr=Math.floor,Pr=Function.prototype.toString,Ur=Ir.hasOwnProperty,Vr=$r.push,Gr=Ir.propertyIsEnumerable,Hr=$r.splice,Jr=w(Jr=Object.create)&&Jr,Kr=w(Kr=Array.isArray)&&Kr,Lr=Nr.isFinite,Qr=Nr.isNaN,Xr=w(Xr=Object.keys)&&Xr,Yr=Math.max,Zr=Math.min,nt=w(nt=Date.now)&&nt,rt=Math.random; -a.prototype=f.prototype;var tt={};!function(){var n={0:1,length:1};tt.spliceObjects=(Hr.call(n,0,1),!n[0])}(1),f.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Jr||(c=function(){function n(){}return function(r){if(L(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Nr.Object()}}()),j(arguments)||(j=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ur.call(n,"callee")&&!Gr.call(n,"callee")||false});var et=_(function(n,r,t){Ur.call(n,t)?n[t]++:n[t]=1 -}),ut=_(function(n,r,t){Ur.call(n,t)?n[t].push(r):n[t]=[r]}),ot=_(function(n,r,t){n[t]=r}),it=$,ft=Kr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Dr.call(n)==br||false};K(/x/)&&(K=function(n){return typeof n=="function"&&"[object Function]"==Dr.call(n)});var at=Xr?function(n){return L(n)?Xr(n):[]}:n,lt=nt||function(){return(new Date).getTime()};f.after=function(n,r){if(!K(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0}},f.bind=P,f.bindAll=function(n){for(var r=1/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Jr||(c=function(){function n(){}return function(r){if(L(r)){n.prototype=r;var t=new n;n.prototype=null}return t||Nr.Object()}}()),j(arguments)||(j=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ur.call(n,"callee")&&!Gr.call(n,"callee")||false});var et=b(function(n,r,t){Ur.call(n,t)?n[t]++:n[t]=1 +}),ut=b(function(n,r,t){Ur.call(n,t)?n[t].push(r):n[t]=[r]}),ot=b(function(n,r,t){n[t]=r}),it=$,ft=Kr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Dr.call(n)==_r||false};K(/x/)&&(K=function(n){return typeof n=="function"&&"[object Function]"==Dr.call(n)});var at=Xr?function(n){return L(n)?Xr(n):[]}:n,lt=nt||function(){return(new Date).getTime()};f.after=function(n,r){if(!K(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0}},f.bind=P,f.bindAll=function(n){for(var r=1i(a,e)){for(r=t;--r;)if(0>i(n[r],e))continue n;a.push(e)}return a},f.invert=function(n){for(var r=-1,t=at(n),e=t.length,u={};++rr?0:r);++nr?0:r);++nt?Yr(0,e+t):Zr(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},f.mixin=tr,f.noConflict=function(){return Nr._=Mr,this},f.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Cr(rt()*(r-n+1))},f.reduce=M,f.reduceRight=D,f.result=function(n,r){if(null!=n){var t=n[r]; return K(t)?n[r]():t}},f.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:at(n).length},f.some=z,f.sortedIndex=O,f.template=function(n,r,t){var e=f,u=e.templateSettings;n=(n||"")+"",t=G({},t,u);var i=0,a="__p+='",u=t.variable;n.replace(RegExp((t.escape||yr).source+"|"+(t.interpolate||yr).source+"|"+(t.evaluate||yr).source+"|$","g"),function(r,t,e,u,f){return a+=n.slice(i,f).replace(mr,o),t&&(a+="'+_.escape("+t+")+'"),u&&(a+="';"+u+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),i=f+r.length,r diff --git a/lodash.js b/lodash.js index cb10a922d..38c45ae26 100644 --- a/lodash.js +++ b/lodash.js @@ -6950,6 +6950,9 @@ // property containing a primitive value if (props.length == 1 && a === a && !isObject(a)) { return function(object) { + if (!hasOwnProperty.call(object, key)) { + return false; + } var b = object[key]; return a === b && (a !== 0 || (1 / a == 1 / b)); }; @@ -6959,7 +6962,9 @@ result = false; while (length--) { - if (!(result = baseIsEqual(object[props[length]], source[props[length]], null, true))) { + var key = props[length]; + if (!(result = hasOwnProperty.call(object, key) && + baseIsEqual(object[key], source[key], null, true))) { break; } } diff --git a/test/test.js b/test/test.js index dd32a1fb5..9ff87aa28 100644 --- a/test/test.js +++ b/test/test.js @@ -8465,6 +8465,20 @@ deepEqual(_.where(collection, { 'a': [] }), []); deepEqual(_.where(collection, { 'a': [2] }), expected); }); + + test('should handle `properties` with `undefined` values', 4, function() { + var properties = { 'b': undefined }; + deepEqual(_.where([{ 'a': 1 }, { 'a': 1, 'b': 1 }], properties), []); + + var object = { 'a': 1, 'b': undefined }; + deepEqual(_.where([object], properties), [object]); + + properties = { 'a': { 'c': undefined } }; + deepEqual(_.where([{ 'a': { 'b': 1 } }, { 'a':{ 'b':1 , 'c': 1 } }], properties), []); + + object = { 'a': { 'b': 1, 'c': undefined } }; + deepEqual(_.where([object], properties), [object]); + }); }()); /*--------------------------------------------------------------------------*/