javascript - 为什么 Array.prototype.filter 会移除空元素而不考虑回调?

标签 javascript arrays

我有一个数组,里面有一些空元素,我在那个数组上调用 .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/

相关文章:

javascript - 延迟加载 javascript 文件

C++指针创建数组

arrays - bash 脚本使用变量获取第 7 个参数

JavaScript 的 Ruby 范围的等效代码

javascript - 这段创建连续数字数组的代码是如何工作的?

javascript - 通过单击按钮获取当前行

javascript - 如何安全地接受包含来自所见即所得编辑器的 iframe 的用户输入?

javascript - 使用 Greasemonkey 或 Tampermonkey 添加 JavaScript 按钮?

javascript - 已动态添加到 DOM 的元素的第一个实例的选择器

javascript - 在 javascript 中的 map() 中动态设置 key ?