怎样修改代码来包含数组层级的信息而不是简单地跳过空值?
时间: 2024-09-18 16:01:36 浏览: 17
如果你想在变量名称中保留数组的层级信息,而不仅仅是最后一个非空元素,可以稍微调整`formatVariableName`函数。这里是一个改进版本,它会创建类似于`my_array[1].with.empty.value`这样的命名模式:
```javascript
function formatVariableNameWithLevels(arr, currentLevel = '') {
if (arr.length === 0) return currentLevel; // 空数组或无元素时,返回当前层级
const [firstElement, ...rest] = arr;
const variablePart = firstElement.replace(/[^a-zA-Z0-9]/g, '_');
// 如果当前层级为空,直接添加第一个元素,否则追加层级信息
const nextLevel = rest.length > 0 ? `${currentLevel}[${variablePart}]` : variablePart;
return formatVariableNameWithLevels(rest, nextLevel);
}
// 示例
const nestedArray = ['my', ['array', 'with', 'nested', []], 'flat', 'value'];
const varName = formatVariableNameWithLevels(nestedArray); // 输出 "my_array_with_nested_flat_value"
```
在这个版本中,我们传入了一个新的`currentLevel`参数,并在每次递归调用时更新这个参数。如果遇到空子数组,就只加入当前元素作为层级,直到找到非空元素为止。