首页 > 解决方案 > 删除字符串,使用 JavaScript 将数字保留在数组中

问题描述

其他文章讨论了基于搜索词从数组中删除字符串。

但我试图识别哪些元素是字符串,哪些元素是数组中的数字,然后删除所有字符串以返回一个新数组。

function filter_list(l) {

  let newArray = []; 

  for (let i = 0; i < l.length; i ++) {

     if (i !== "^[a-zA-Z0-9_.-]*$") {
       newArray = newArray + i;
     }
  }

  return newArray;

}

这是回归0123

  1. 为什么它不返回一个数组?
  2. 为什么if (i !== "^[a-zA-Z0-9_.-]*$")不工作?当一个元素是数组中的字符串(引号中的东西)时,我还能如何检查?

https://www.codewars.com/kata/list-filtering/train/javascript

谢谢

标签: javascriptarrays

解决方案


你可以是typeof关键字。和filter()。我已经测试了代码,它通过了代码战中的所有测试。

使用 ES6 箭头函数

function filter_list(l) {
  return l.filter(x => typeof x === "number");
}
console.log(filter_list([1,2,'a','b']))

无箭头功能

function filter_list(l) {
  return l.filter(function(x){
      return typeof x === "number"
    });
}
console.log(filter_list([1,2,'a','b']))

使用简单循环

function filter_list(l) {
  let newArr = [];
  for(let i = 0;i<l.length;i++){
    if(typeof l[i] === "number") newArr.push(l[i]);
  }
  return newArr
}
console.log(filter_list([1,2,'a','b']))


推荐阅读