javascriptx
Version:
javascript 基础库扩展
149 lines (128 loc) • 4.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // Object
var _replaceAlls = require("./replaceAlls");
var _replaceAlls2 = _interopRequireDefault(_replaceAlls);
var _test = require("./test");
var _test2 = _interopRequireDefault(_test);
var _testSome = require("./testSome");
var _testSome2 = _interopRequireDefault(_testSome);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _getValueX = function _getValueX(object, field) {
var repeat = [];
var totalIndex = 0;
var fields = field.split(".");
var fs = fields.map(function (f, i) {
return fields.slice(0, i + 1).join(".");
});
var variable = [];
var maxIndex = 10;
if (fields.every(function (f) {
return f !== "*";
})) {
maxIndex = fields.length;
}
var getKeys = function getKeys(subObjects) {
var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
if (index > maxIndex || totalIndex > 10000) {
return undefined;
}
variable[index] = {};
for (var subObjectKey in subObjects) {
var subObject = subObjects[subObjectKey];
for (var key in subObject) {
totalIndex++;
try {
var val = subObject[key];
if ((subObjectKey ? field.includes('.') : true) && (0, _test2.default)(subObjectKey + key, field)) {
return val;
}
if (val instanceof Object && !repeat.includes(val) && (0, _testSome2.default)(subObjectKey + key, fs.slice(0, index))) {
repeat.push(val);
variable[index][subObjectKey + key + "."] = val;
}
} catch (ex) {
continue;
}
}
}
return Object.isEmpty(variable[index]) || index > maxIndex ? undefined : getKeys(variable[index], index + 1);
};
return getKeys({ "": object });
};
var _getValue = function _getValue(object, field) {
var fields = field.split('.');
var result = _extends({}, object);
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var key = _step.value;
if (result !== undefined && result !== null && result[key] !== undefined) {
result = result[key];
} else {
return undefined;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return result;
};
var getValue = function getValue(object, field, defaultValue) {
if (!field) {
return defaultValue;
}
if (!object || !Object.keys(object).length || !field) {
return defaultValue;
}
if (_replaceAlls2.default) {
field = (0, _replaceAlls2.default)(field, ['[', ']', '"', "'"], ['.', '', '', '']);
}
var fields = field.split('|');
var result = defaultValue;
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = fields[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var f = _step2.value;
var res = ~f.indexOf('*') ? _getValueX(object, f) : _getValue(object, f);
if (res !== undefined) {
result = res;
if (res !== null) {
break;
}
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return result === undefined || result === null ? defaultValue : result;
};
exports.default = getValue;