首页 > 解决方案 > 仅返回数字并从javascript中的现有数组中删除字符串?

问题描述

我搜索了许多类似的问题,但无法找到这个棘手问题的答案。我需要一个函数来从数组中删除所有不是数字的项目。但是函数应该修改现有数组,而不是创建一个新数组。我试图做这样的事情:

 let array = [1, 'a', 'b', 2];
 array = array.filter(item => typeof item !== "string");
 console.log(array);

 //--> [1, 2]

虽然我得到了正确的结果,但我在额外的点上进行了测试,因为根据MDN,结果创建了一个具有正确结果的新数组,我被忽略了,也不完全知道。

那么在解决这些问题方面,有没有人比我更有经验,从我的想法来看,我试图用 array.splice 和 for 循环做几个小时的事情,但几乎没有成功。提前谢谢你,很抱歉很长时间开帖。

标签: javascriptarraysstringinteger

解决方案


您可以 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]


推荐阅读