javascript - 仅返回数字并从javascript中的现有数组中删除字符串?
问题描述
我搜索了许多类似的问题,但无法找到这个棘手问题的答案。我需要一个函数来从数组中删除所有不是数字的项目。但是函数应该修改现有数组,而不是创建一个新数组。我试图做这样的事情:
let array = [1, 'a', 'b', 2];
array = array.filter(item => typeof item !== "string");
console.log(array);
//--> [1, 2]
虽然我得到了正确的结果,但我在额外的点上进行了测试,因为根据MDN,结果创建了一个具有正确结果的新数组,我被忽略了,也不完全知道。
那么在解决这些问题方面,有没有人比我更有经验,从我的想法来看,我试图用 array.splice 和 for 循环做几个小时的事情,但几乎没有成功。提前谢谢你,很抱歉很长时间开帖。
解决方案
您可以 Array#splice()
在反向for
循环中使用
因为您正在向后工作,所以您删除的任何内容都不会影响您移动方向上的任何索引,因为原始元素仍然存在于0
当前位置
let array = [1, 'a', 'b', 2];
for (let i = array.length - 1; i >= 0; i--) {
if (typeof array[i] === "string") {// modify conditional as needed
array.splice(i, 1);
}
}
console.log(array);
//--> [1, 2]
推荐阅读
- css - Flex 容器 2 项设置宽度 3 自动,3 项均分宽度
- php - 如何使用 Laravel Postman 仅获取活动参数?
- types - 如何在 Julia 中获取数据类型
- .net - 使用 InMemoryTestHarness 时如何注入 MassTransit 的 IPublishEndpoint
- python - 将 RAVI 文件转换为 CSV
- c - 为什么有必要“释放”一个节点?
- bash - 从bash中的loc输出中提取值
- php - id 属性在 laravel 的 map 函数中返回值 0
- c++ - SFML 不绘制多个圆
- python - Django聚合总和抛出`int()参数必须是字符串,类似字节的对象或数字,而不是'dict'`