| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 递归处理对象,移除 #text 键并返回其值,同时处理数值字符串到数字的转换 |
| | | * @param {any} obj - 需要处理的对象或值 |
| | | * @returns {any} 处理后的对象或值 |
| | | */ |
| | | export function removeTextKey(obj) { |
| | | if (typeof obj !== 'object' || obj === null) { |
| | | // 如果是数值字符串,转换为数值 |
| | |
| | | } |
| | | |
| | | if (Array.isArray(obj)) { |
| | | // 递归处理数组中的每个元素 |
| | | return obj.map(item => removeTextKey(item)); |
| | | } |
| | | |
| | | if (Object.prototype.hasOwnProperty.call(obj, '#text')) { |
| | | // 如果 #text 的值是数值字符串,转换为数值 |
| | | // 如果存在 #text 属性,返回其值(如果是数值字符串则转换为数字) |
| | | const textValue = obj['#text']; |
| | | return typeof textValue === 'string' && /^-?\d+(\.\d+)?$/.test(textValue) ? Number(textValue) : textValue; |
| | | } |
| | | |
| | | // 递归处理对象属性 |
| | | const newObj = {}; |
| | | for (const key in obj) { |
| | | if (Object.prototype.hasOwnProperty.call(obj, key)) { |
| | | // 如果属性值是空对象,则设为空字符串;否则递归处理 |
| | | newObj[key] = Object.keys(obj[key]).length === 0 ? '' : removeTextKey(obj[key]); |
| | | } |
| | | } |