如何将数组中的空位填充为null值,确保元素数量符合预期并适配多种空位分布场景?
解决数组空位填充为null的问题
我来帮你搞定这个数组空位填充的需求~首先先说说你现有代码里的几个小问题:
- 数组的**空位(稀疏数组的空槽)**会被
map方法直接跳过,不会进入回调函数,所以那些空位根本没被处理,还是留在数组里 - 你返回的是字符串
'null',但需求是要填充null原始值(不是字符串类型) - 其实那个长度判断的逻辑可以省略,因为我们的解决方案能统一处理稀疏和密集数组
正确的实现方式
我们可以用Array.from()来处理,它会遍历数组的每一个索引,包括空位(会把空位当作undefined),然后通过映射函数把undefined(包括空位转来的)替换成null,同时严格保留原数组的长度。
代码示例:
function fillEmptySlotsWithNull(row) { // 用Array.from遍历所有索引,空位会被转为undefined,然后替换成null return Array.from(row, el => el ?? null); } // 测试各种场景 console.log(fillEmptySlotsWithNull([1,,3])); // 输出: [1, null, 3] console.log(fillEmptySlotsWithNull([,,])); // 输出: [null, null, null] console.log(fillEmptySlotsWithNull([, 'hello',])); // 输出: [null, 'hello', null] console.log(fillEmptySlotsWithNull([,, true])); // 输出: [null, null, true]
兼容性说明
如果你的运行环境不支持ES2020的空值合并运算符??,可以换成更兼容的写法:
return Array.from(row, el => typeof el === 'undefined' ? null : el);
这样不管是[value,,]、[, value,]还是[,,value]这类带空位的数组,都能完美转换成对应长度、空位填充为null的数组啦~
内容的提问来源于stack exchange,提问作者Mout Pessemier
相关产品推荐
相关产品推荐

