in src/providers/database.ts [575:611]
private _checkAndConvertToArray(node: any): any {
if (node === null || typeof node === 'undefined') {
return null;
}
if (typeof node !== 'object') {
return node;
}
const obj: any = {};
let numKeys = 0;
let maxKey = 0;
let allIntegerKeys = true;
for (const key in node) {
if (!node.hasOwnProperty(key)) {
continue;
}
const childNode = node[key];
obj[key] = this._checkAndConvertToArray(childNode);
numKeys++;
const integerRegExp = /^(0|[1-9]\d*)$/;
if (allIntegerKeys && integerRegExp.test(key)) {
maxKey = Math.max(maxKey, Number(key));
} else {
allIntegerKeys = false;
}
}
if (allIntegerKeys && maxKey < 2 * numKeys) {
// convert to array.
const array: any = [];
_.forOwn(obj, (val, key) => {
array[key] = val;
});
return array;
}
return obj;
}