本文介绍一种遍历对象属性并用最近一次出现的非空数组末尾元素填充后续空数组的实用方法,适用于数据补全、状态延续等场景。
在实际开发中,我们常遇到需要基于历史状态“延续”当前值的情况——例如,当某个配置项缺失(表现为对应数组为空)时,自动继承上一次有效配置的最后一个条目。这种模式在表单状态同步、时间序列数据插值或 UI 状态缓存等场景中尤为常见。
以下是一个简洁可靠的实现方案:
let lastValue = null;
for (const key in myitems) {
if (Array.isArray(myitems[key]) && myitems[key].length === 0) {
// 当前值为空数组,且已有有效历史值,则填充
if (lastValue !== null) {
myitems[key] = [lastValue];
}
} else if (Array.isArray(myitems[key]) && myitems[key].length > 0) {
// 更新 lastValue 为当前非空
数组的最后一个元素
lastValue = myitems[key][myitems[key].length - 1];
}
// 非数组值(如 undefined、null、字符串等)将被忽略,不更新 lastValue
}✅ 关键设计说明:
⚠️ 注意事项:
此方法轻量、可读性强,无需依赖外部库,适合嵌入各类 JavaScript 数据预处理流程中。