javascript - 从数组中删除特定项
问题描述
我有一个只应该包含 10 位数字的数组。我试图消除数组中包含“-”符号的条目,但由于某种原因它不起作用。
for(var z = 0; z<numArray.length; z++){
if(numArray[z].includes("-")){
numArray.splice(z, 0)
}
}
我有什么明显的遗漏吗?
解决方案
从数组中删除元素时,您需要向后迭代数组或递减index
变量,这是一个经典的做法,否则您可能会跳过应该删除的彼此相邻的元素。
此外,具有0
第二个参数意味着“替换 0”,或者在这种情况下,“删除 0”,因此将其更改为1
将删除元素
for(var z = 0; z<numArray.length; z++){
if(numArray[z].includes("-")){
numArray.splice(z, 1)
z--;
}
}
for(var z = numArray.length-1; z >= 0; z--){
if(numArray[z].includes("-")){
numArray.splice(z, 1);
}
}
但是,使用它更容易Array.prototype.filter
。此函数返回一个新数组,其中仅包含基于传入函数评估为 true 的元素,因此我们只想保留不包含的元素"-"
numArray = numArray.filter((num) => !num.includes("-"));
推荐阅读
- reactjs - 使用外部样式表在 React 中测量组件大小不正确
- ajax - 如何在 django 的表单中添加下拉列表?
- python - 为什么 FastText 词嵌入可以从另一种语言生成词的表示?
- laravel - 将默认 Laravel 身份验证电子邮件字段更改为 user_email
- php - 如何将代码从刀片移动到控制器
- python-3.x - 不在索引中,seaborn
- java - 我想使用核心 java 根据文本输入动态创建 jpg 图像
- xml - XSLT 按名称查找并获取文件
- c# - 如果使用 ConfigureAwait(false),异步/等待仍然会死锁吗?
- php - 来自 csv 查询的 Laravel 雄辩的 postgress 副本