1
This commit is contained in:
62
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/xe-utils/has.js
Normal file
62
20220330_Vote/Ewide.Web.Entry/wwwroot/lib/xe-utils/has.js
Normal file
@@ -0,0 +1,62 @@
|
||||
var staticHGKeyRE = require('./staticHGKeyRE')
|
||||
|
||||
var helperGetHGSKeys = require('./helperGetHGSKeys')
|
||||
|
||||
var hasOwnProp = require('./hasOwnProp')
|
||||
|
||||
/**
|
||||
* 检查键、路径是否是该对象的属性
|
||||
*
|
||||
* @param {Object/Array} data 对象
|
||||
* @param {String/Function} property 键、路径
|
||||
* @return {Boolean}
|
||||
*/
|
||||
function has (obj, property) {
|
||||
if (obj) {
|
||||
if (hasOwnProp(obj, property)) {
|
||||
return true
|
||||
} else {
|
||||
var prop, arrIndex, objProp, matchs, rest, isHas
|
||||
var props = helperGetHGSKeys(property)
|
||||
var index = 0
|
||||
var len = props.length
|
||||
for (rest = obj; index < len; index++) {
|
||||
isHas = false
|
||||
prop = props[index]
|
||||
matchs = prop ? prop.match(staticHGKeyRE) : ''
|
||||
if (matchs) {
|
||||
arrIndex = matchs[1]
|
||||
objProp = matchs[2]
|
||||
if (arrIndex) {
|
||||
if (rest[arrIndex]) {
|
||||
if (hasOwnProp(rest[arrIndex], objProp)) {
|
||||
isHas = true
|
||||
rest = rest[arrIndex][objProp]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (hasOwnProp(rest, objProp)) {
|
||||
isHas = true
|
||||
rest = rest[objProp]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (hasOwnProp(rest, prop)) {
|
||||
isHas = true
|
||||
rest = rest[prop]
|
||||
}
|
||||
}
|
||||
if (isHas) {
|
||||
if (index === len - 1) {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
module.exports = has
|
||||
Reference in New Issue
Block a user