javascript - Map.filter() 没有返回预期的输出
问题描述
我正在尝试 leetcode 删除元素问题。目标是从等于某个值的数组中删除所有元素。例如,如果array = [3, 2, 2, 3]
和val = 3
输出数组应该是 [2, 2]。
我的过滤器功能似乎根据控制台日志产生了正确的输出,但在返回语句中它是完全不同的东西。
以下是我的代码的副本:
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
let filteredNums = nums.filter(element => {
return element !== val
});
console.log(filteredNums)
return filteredNums;
};
这是我得到的输出:
有没有我做错的事情我错过了?
解决方案
通过假设从数组中删除元素,您可以通过拼接数组来使用不同的方法。
通过使用Array#splice
,您需要从数组的末尾进行迭代,因为已删除元素的索引正在更改。
最后,您需要返回数组的新长度。
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
let i = nums.length;
while (i--) if (nums[i] === val) nums.splice(i, 1);
return nums.length;
};
var array = [3, 2, 2, 3];
console.log(removeElement(array, 3));
console.log(array);
推荐阅读
- javascript - Threejs项目中移动和桌面浏览器之间画布的document.createElement不一致
- python - TypeError: dtype 对象的图像数据不能转换为浮点数
- reactjs - Styled-Components:具有多个道具/状态的条件样式
- android - 在 Android 问题中插入动态视图
- javascript - 如何获取鼠标单击的位置并在图像上添加标记(标记)?
- azure - 使用 Azure CNI 和站点到站点 VPN VNet 时如何从 pod 子网中拆分 AKS 群集子网
- kubernetes - 将 Kubernetes 中的各个点联系起来的良好做法是什么?
- amazon-web-services - 如何防止 Terraform 模块创建重复的 API 网关资源?
- javascript - 如何在一个导入的对象中组合 CSS 类
- javascript - 每个 React 类方法的“函数缺少返回类型”