Simplify has and hasIn.

This commit is contained in:
John-David Dalton
2017-02-26 23:07:13 -08:00
parent d1d86811bc
commit b6a426a10d
4 changed files with 13 additions and 57 deletions

View File

@@ -1,16 +0,0 @@
/** Used to check objects for own properties. */
const hasOwnProperty = Object.prototype.hasOwnProperty
/**
* The base implementation of `has` without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHas(object, key) {
return object != null && hasOwnProperty.call(object, key)
}
export default baseHas

View File

@@ -1,13 +0,0 @@
/**
* The base implementation of `hasIn` without support for deep paths.
*
* @private
* @param {Object} [object] The object to query.
* @param {Array|string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
*/
function baseHasIn(object, key) {
return object != null && key in Object(object)
}
export default baseHasIn

22
has.js
View File

@@ -1,15 +1,15 @@
import baseHas from './.internal/baseHas.js'
import hasPath from './.internal/hasPath.js'
/** Used to check objects for own properties. */
const hasOwnProperty = Object.prototype.hasOwnProperty
/**
* Checks if `path` is a direct property of `object`.
* Checks if `key` is a direct property of `object`.
*
* @since 0.1.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
* @see hasIn, set, get
* @param {string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
* @see hasIn, hasPath, hasPathIn
* @example
*
* const object = { 'a': { 'b': 2 } }
@@ -18,17 +18,11 @@ import hasPath from './.internal/hasPath.js'
* has(object, 'a')
* // => true
*
* has(object, 'a.b')
* // => true
*
* has(object, ['a', 'b'])
* // => true
*
* has(other, 'a')
* // => false
*/
function has(object, path) {
return object != null && hasPath(object, path, baseHas)
function has(object, key) {
return object != null && hasOwnProperty.call(object, key)
}
export default has

View File

@@ -1,15 +1,12 @@
import baseHasIn from './.internal/baseHasIn.js'
import hasPath from './.internal/hasPath.js'
/**
* Checks if `path` is a direct or inherited property of `object`.
*
* @since 4.0.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path to check.
* @returns {boolean} Returns `true` if `path` exists, else `false`.
* @see has, get, set, unset
* @param {string} key The key to check.
* @returns {boolean} Returns `true` if `key` exists, else `false`.
* @see has, hasPath, hasPathIn
* @example
*
* const object = create({ 'a': create({ 'b': 2 }) })
@@ -17,17 +14,11 @@ import hasPath from './.internal/hasPath.js'
* hasIn(object, 'a')
* // => true
*
* hasIn(object, 'a.b')
* // => true
*
* hasIn(object, ['a', 'b'])
* // => true
*
* hasIn(object, 'b')
* // => false
*/
function hasIn(object, path) {
return object != null && hasPath(object, path, baseHasIn)
function hasIn(object, key) {
return object != null && key in Object(object)
}
export default hasIn