mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-06 09:47:48 +00:00
Ensure has treats nested sparse arrays consistently.
This commit is contained in:
37
lodash.js
37
lodash.js
@@ -5343,29 +5343,24 @@
|
||||
* @returns {boolean} Returns `true` if `path` exists, else `false`.
|
||||
*/
|
||||
function hasPath(object, path, hasFunc) {
|
||||
if (object == null) {
|
||||
return false;
|
||||
}
|
||||
var result = hasFunc(object, path);
|
||||
if (!result && !isKey(path)) {
|
||||
path = baseCastPath(path);
|
||||
path = isKey(path, object) ? [path] : baseCastPath(path);
|
||||
|
||||
var index = -1,
|
||||
length = path.length;
|
||||
var index = -1,
|
||||
length = path.length;
|
||||
|
||||
while (++index < length) {
|
||||
var key = path[index];
|
||||
if (!(result = object != null && hasFunc(object, key))) {
|
||||
break;
|
||||
}
|
||||
object = object[key];
|
||||
while (++index < length) {
|
||||
var key = path[index];
|
||||
if (!(result = object != null && hasFunc(object, key))) {
|
||||
break;
|
||||
}
|
||||
object = object[key];
|
||||
}
|
||||
var length = object ? object.length : undefined;
|
||||
return result || (
|
||||
!!length && isLength(length) && isIndex(path, length) &&
|
||||
(isArray(object) || isString(object) || isArguments(object))
|
||||
);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
var length = object ? object.length : 0;
|
||||
return !!length && isLength(length) && isIndex(key, length) &&
|
||||
(isArray(object) || isString(object) || isArguments(object));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -12048,7 +12043,7 @@
|
||||
* // => false
|
||||
*/
|
||||
function has(object, path) {
|
||||
return hasPath(object, path, baseHas);
|
||||
return object != null && hasPath(object, path, baseHas);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -12078,7 +12073,7 @@
|
||||
* // => false
|
||||
*/
|
||||
function hasIn(object, path) {
|
||||
return hasPath(object, path, baseHasIn);
|
||||
return object != null && hasPath(object, path, baseHasIn);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user