我有一个数组,里面有一些空元素,我在那个数组上调用 .filter
,回调总是返回 true。
[1, 2, , 5].filter(() => true);
上述代码的结果是 [1, 2, 5]
- 空元素不再存在。这不是我所期望的,因为回调返回 true。
为了比较,Array.prototype.map
确实对空项执行回调:
[1, 2, , 5].map(x => x); // returns [1, 2, , 5]
最佳答案
在 map
中,不会为每个元素调用回调(正如您可以通过将回调中的值记录到 map
中看到的那样),但保留键,留下结果中的空槽。过滤器不保留 key (因为过滤通常会移动 key ),因此这些 key 会丢失。不过,这两个操作实际上都没有在空槽上运行回调。
关于javascript - 为什么 Array.prototype.filter 会移除空元素而不考虑回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782264/